我有两个 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;
}
}
- 运行
sudo ln -s /etc/nginx/sites-available/myproxy.conf /etc/nginx/sites-enabled/
- 运行
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; }