NGINX 多个反向代理



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

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

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

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

在/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;
}
}

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

我认为你没有跑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 按如下方式传递到服务器:

  • 如果使用 URI 指定 proxy_pass 指令,则当请求传递到服务器时,规范化请求 URI 的一部分

    与位置将替换为指令中指定的 URI:

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

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

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

最新更新