docker - Nginx 反向代理 docker 容器 LAN
问题描述
我无法理解 nginx 反向代理是如何工作的,也许有人可以提供帮助。假设我在局域网中使用 docker 的服务器的 IP 为 192.168.0.3 我有这样的 docker-compose 文件:
version: '2'
angular-on-nginx:
build: angular_client
ports:
- "80:80"
volumes:
- ./angular_client/dist:/usr/share/nginx/html
- ./angular_client/default.conf:/etc/nginx/conf.d/default.conf
express:
build: express_server
ports:
- "4444:4444"
volumes:
- ./express_server/:/usr/src/app
links:
- database
depends_on:
- database
database:
image: mongo
ports:
- "27777:27777"
volumes:
- ./mongodb_data:/data/db
在 angular-on-nginx 容器上有 angular app 和 nginx 具有这样的配置:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
location /express {
proxy_pass http://192.168.0.3:4000/;
}
}
但这在键入 192.168.0.3 angular web app 加载时不起作用并且可以正常工作。当输入 192.168.0.3:4444 express 服务器时响应很好,但是当输入 192.168.0.3/express 时有 502 bad gateway。如何使它起作用,以便当我输入 192.168.0.3/express 时,我将得到与输入 192.168.0.3:4444 时相同的结果?
解决方案
不知道为什么,但这有效。
server {
listen 80;
listen [::]:80;
server_name 192.168.0.3;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
location /express/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://192.168.0.3:4444;
}
}
推荐阅读
- python-3.x - Azure Web App 的 Python 版本不匹配
- java - 使用 google unity firebase 保持登录状态
- solidity - 检查映射中是否存在键
- node.js - Nodejs访问本地网络上的共享文件夹,根目录问题
- django - 解决django模板不存在的问题
- vagrant - 如何指定在 Vagrant 中下载到 Virtualbox VM 的 salt 版本?
- java - java for循环性能差异
- python - np.angle 返回的相位不准确
- angular - 如何正确配置代理以在 Angular/Spring Boot 中发出发布请求
- python - 内存泄漏的生成器