背景
- 在同一宿主机部署了Nginx 和 Web服务
Nginx容器名:nginx
Web容器名:web - Nginx 需要反向代理 Web服务
错误的配置
- Nginx配置:
这里是希望nginx监听80 端口,并且将请求转发到同宿主机的8080端口
server {
listen 80;
server_name www.sample.com;
location / {
proxy_pass http://localhost:8080;
}
}
这样配置是无法成功转发的,因为这里的localhost是在容器内部,无法访问到宿主机
正确的方式
- 处理方式有好几种,这里说docker的自定义网桥的方式
- 创建网桥
docker network create user_network_bridge
user_network_bridge – 网桥名称
2. 容器加入网桥
docker network connect --alias docker.brige.web user_network_bridge web
docker network connect --alias docker.brige.nginx user_network_bridge nginx
docker.brige.web – 容器在网桥中的别名
user_network_bridge – 加入的网桥名称
web – 容器名称/容器ID
nginx – 容器名称/容器ID
3. 重新配置Nginx
server {
listen 80;
server_name www.sample.com;
location / {
proxy_pass http://docker.bridge.web;
}
}
- 重启Nginx
- 成功