首页 > 解决方案 > NGINX 多个反向代理

问题描述

我在安装了 NGNIX 的 ubuntu 服务器中的端口 3000 和 4000 上运行了两个 NodeJS 后端。

我没有任何域名,但我想使用 nginx 作为反向代理,我的 IP 地址是这样的。

这是我在 NGINX 配置中尝试的,但它返回 404 not found 响应。

在 /etc/nginx/sites-available 目录中,我修改了默认值,

server {

    listen 80;
    listen [::]:80;

    location /app1 {
        proxy_pass http://127.0.0.1:3000;
        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;
    }

    location /app2 {
        proxy_pass http://127.0.0.1:4000;
        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;
    }

}

我怎样才能使这项工作?谢谢!

标签: ubuntunginxreverse-proxy

解决方案


我想你没跑sudo service Nginx reload。此命令重新加载在配置文件中所做的更改。检查,如果仍然无法正常工作,请执行以下操作:

创建一个myproxy.conf包含以下内容的文件:

1.

server {
    listen 80;
    listen [::]:80;

location /app1 {
    proxy_pass http://127.0.0.1:3000;
    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;
}

location /app2 {
    proxy_pass http://127.0.0.1:4000;
    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;
}

}

  1. sudo ln -s /etc/nginx/sites-available/myproxy.conf /etc/nginx/sites-enabled/
  2. sudo service nginx reload

您应该能够代理服务器。

笔记

  • 服务器上下文应分别以 app1 和 app2 开头。
  • 如果使用myproxy.conf删除default/etc/nginx/site-enabled

重要的

请求 URI 被传递给服务器,如下所示:

  • 如果 proxy_pass 指令是用一个 URI 指定的,那么当一个请求被传递到服务器时,一个规范化的请求 URI 的部分匹配

    location 被指令中指定的 URI 替换:

    location /name/ { proxy_pass http://127.0.0.1/remote/; }

  • 如果 proxy_pass 没有指定 URI,则请求 URI 以与处理原始请求时客户端发送的相同格式传递给服务器,或者在处理更改的 URI 时传递完整的规范化请求 URI:

    location /some/path/ { proxy_pass http://127.0.0.1; }


推荐阅读