ubuntu - NGINX 多个反向代理
问题描述
我在安装了 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;
}
}
我怎样才能使这项工作?谢谢!
解决方案
我想你没跑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
删除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; }
推荐阅读
- ruby-on-rails - 路径名称包含图像 url 的空字节,而存在
- javascript - 如何将动态生成的 javascript 表转换为 json/xml 以及如何保存该文件?
- powershell - 使用 Powershell 创建多个文件?
- node.js - 如何将我的 Google Assistant 应用程序连接到我自己的服务器
- java - Java中枚举的每个值的键值映射
- java - 使用列表删除数组
- python - NLP - 如何添加更多功能?
- xml - 元素必须匹配 XML & DTD
- javascript - 为什么console.log在async_hooks nodejs中变得无限
- python - Telnet 到 Python 服务器卡住了