NodeJS与Nginx共用80端口
程序员文章站
2022-07-15 14:29:46
...
Apache和Nginx通常都会使用默认的HTTP请求的80端口。但我们知道,一旦开启了Nginx后,NodeJS再去监听80端口就会发生错误。那么,我们该如何解决这个问题呢?
接下来,以最近发布的一个个人博站为例。
在我的阿里云服务器上已经开启了Nginx服务,并且该域名下已经有对应的项目在跑。而此时,我的博站是采用NodeJS编写的,监听的端口是8090端口。要实现NodeJS能够监听到80端口,可以采取的一种简单的方法是,将80端口反向代理到8090的端口上,这样,所有发送到80端口的请求都会重定向到8090;
首先,我在阿里云的域名解析上先配置了kingsley.allenzhan.top 这个子域名。然后在我的Nginx里的vhost里创建了一个king.conf文件,并写入相应的配置。
如下
其中
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8090/;
proxy_set_header X-NginX-Proxy true;
}
是将发往 kingsley.allenzhan.top 的请求 重定向到 NodeJS监听的 8090 端口上。
但是,我们会发现,路由是成功了,但是静态文件却找不到了。所以,还需要配置以下的路径
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
root /application/nginx/html/king/blogs/;
expires 30d;
}
location ~ .*\.(js|css)?$
{
root /application/nginx/html/king/blogs/;
expires 12h;
}
/application/nginx/html/king/blogs/这个路径是存放博客项目的静态资源的位置。
写入配置后,保存。然后使用命令nginx -s reload 重启Nginx。这样,再访问kingsley.allenzhan.top就可以看到我们不用再输入端口8090 也能够实用默认的80端口访问我们的项目了。