欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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文件,并写入相应的配置。

如下

NodeJS与Nginx共用80端口


其中

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端口访问我们的项目了。