带有2个NodeJS应用程序的NGINX服务器

时间:2017-05-30 02:17:36

标签: node.js nginx webserver google-cloud-platform

我会在没有介绍的情况下缩短它。

我在NGINX配置(在Google云端)上遇到严重问题,使2个nodejs应用在不同PORT的同一域上工作

让我们说app1正在使用端口3002,app2正在使用端口3003

APP1

    location / {
        root /home/bitnami/project_name;
        proxy_pass http://127.0.0.1:3002;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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_redirect off;
    }

APP2

   location /app2 {
        root /home/bitnami/project_name;
        proxy_pass http://127.0.0.1:3003;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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_redirect off;
    }

当我浏览www.example.com/app2时,我得到404页

我知道有些人会说之前已经问过这个Q,请相信我已经尝试过stackoverflow上所有可能的解决方案..非与我合作

注意:app1位置必须是主域,所以(/)没有路径的主域URL

2 个答案:

答案 0 :(得分:1)

我相信您的代码不使用相对路径,这就是您收到此错误的原因,请添加以下行:

rewrite ^/app2(.*) /$1 break;

并且代理传递不需要root,您的新代码应如下所示:

location /app2 {
    #root /home/bitnami/project_name;
    proxy_pass http://127.0.0.1:3003;
    #proxy_http_version 1.1;
    #proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    #proxy_set_header X-NginX-Proxy true;
    #proxy_redirect off;
    rewrite ^/app2(.*) /$1 break;
}

答案 1 :(得分:0)

第一个location块捕获对您域的所有请求的请求,而第二个块从未使用过。将第二个块放在第一个块之前,它应该可以工作。