【问题标题】:NGINX server with 2 NodeJS Apps带有 2 个 NodeJS 应用程序的 NGINX 服务器
【发布时间】:2017-05-30 02:17:35
【问题描述】:

我会在没有介绍的情况下简短介绍..

我在使用 NGINX 配置(在谷歌云上)时遇到了一个严重问题,以使 2 个 nodejs 应用程序在具有不同端口的同一域上工作

假设 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 页面

我知道你们中的一些人会说之前有人问过这个问题,相信我,我已经在 stackoverflow 上尝试了所有可能的解决方案.. 没有和我一起工作

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

【问题讨论】:

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


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 所以你建议我颠倒顺序..就这样?
      • 同样的事情..我得到一个 404 页面
      • 404是来自nginx还是node进程?
      猜你喜欢
      • 1970-01-01
      • 2016-01-19
      • 2020-09-22
      • 2019-11-10
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2018-11-30
      相关资源
      最近更新 更多