当 Node http-server 运行 时,Nginx 反向代理似乎无法正常工作

Nginx reverse proxy doesnt not appear to be working when Node http-server running

我有一个带有两个单页应用程序的服务器(使用框架)运行正在使用节点 http-server:

website1 running on port 80: IP_ADDRESS:80  
website2 running on port 8080: IP_ADDRESS:8080

目前工作流正在使用这两个命令来部署两个站点

pm2 start /usr/bin/http-server -f --name website1 -- -p 80 -d false  
pm2 start /usr/bin/http-server -f --name website2 -- -p 8080 -d false  

最后,我们的站点 运行 在这样的域上:

subdomain.mysite.com for website1  
subdomain.mysite.com:8080 for website2.  

这不是我们想要的,我们想要这样:

subdomain.mysite.com for website1  
subdomain2.mysite.com for website2  

我尝试安装 nginx,反向代理配置如下:

server {
listen 80;

server_name subdomain2.mysite.com;

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}
}

希望现在,如果我输入 subdomain2.mysite.com,它会将我带到端口 8080 上的网站 2,但它没有,而是将我带到端口 80 上的网站 1。事实上,我不能确定这个反向代理是否在工作。

我确定我配置有误,可能是什么问题?

p/s: 我也想知道我这样做是不是完全错误 - 如果我使用 nginx 进行反向代理,我是否应该停止直接使用 http-server?

Node和Nginx不能同时监听80端口。如果你想反向代理,你需要为第一个节点应用程序使用不同的端口,并为它添加另一个虚拟主机到你的 nginx 文件。

例如,将第一个应用程序的端口更改为 8000 如下所示:

pm2 start /usr/bin/http-server -f --name website1 -- -p 8000 -d false
pm2 start /usr/bin/http-server -f --name website2 -- -p 8080 -d false

使用以下 Nginx 配置:

server {
    listen 80;

    server_name subdomain2.mysite.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;

    server_name subdomain1.mysite.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

您可能还想为每个块添加 proxy_redirect off; 标志。