【问题标题】:NGINX Multiple reverse proxiesNGINX 多个反向代理
【发布时间】:2020-04-16 11:41:51
【问题描述】:

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

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

  • xxx.xxx.xxx.xxx/app1 => 应该将所有请求转发到端口 3000
  • xxx.xxx.xxx.xxx/app2 => 应该将所有请求转发到端口 4000

这是我在 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;
    }

}

我怎样才能做到这一点?谢谢!

【问题讨论】:

    标签: ubuntu nginx reverse-proxy


    【解决方案1】:

    我认为你没有运行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/etc/nginx/site-enabled 中删除default

    重要

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

    • 如果 proxy_pass 指令使用 URI 指定,那么当请求传递到服务器时,normalized 请求 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; }

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多