我会在没有介绍的情况下缩短它。
我在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
答案 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
块捕获对您域的所有请求的请求,而第二个块从未使用过。将第二个块放在第一个块之前,它应该可以工作。