我有一个通过docker-compose运行的两个容器:
version: '3'
services:
web:
image: me/web
container_name: web
nginx:
image: me/nginx
container_name: nginx
ports:
- '80:80'
volumes:
- ../nginx:/etc/myapp/nginx
我的nginx容器从default.conf
的映射卷中复制新的entrypoint.sh
:
#!/usr/bin/env bash
cp /etc/myapp/nginx/default.conf /etc/nginx/conf.d/default.conf
nginx -g 'daemon off;'
我的自定义default.conf
如下:
server {
listen 80;
server_name my.website.com;
location / {
proxy_pass http://web/;
}
}
使用此配置,一切都按预期工作。从docker-compose
开始后,我可以导航到http://my.website.com并正确访问web
容器实例。
但是,现在我想将我的端口更改为默认80
以外的其他内容,例如81
:
services:
..
nginx:
image: me/nginx
container_name: nginx
ports:
- '81:80'
..
现在这不再适用了。每当我访问http://my.website.com:81时,我都会:
无法访问此网站
my.website.com拒绝连接。
ERR_CONNECTION_REFUSED
另一个奇怪的部分是,如果我使用localhost
而不是my.website.com
,那么在端口81上一切正常。例如:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web/;
}
}
导航到http://localhost:81正常工作。
我在这里做错了什么?如何将nginx配置为除localhost
(我的域)之外的其他内容,并将代理配置在与web
容器不同的80端口上?
答案 0 :(得分:1)
检查my.website.com上的端口81是否已打开,即检查防火墙规则是否已就绪等等