如何在Docker上使用不同的端口作为nginx代理?
我有两个通过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容器从entrypoint.sh
的映射卷中复制一个新的default.conf
:
#!/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/; } }
有了这个configuration,一切都按预期工作。 在用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工作正常。
我在这里做错了什么? 如何将nginxconfiguration为除localhost
(我的域)之外的其他端口而不是80以外的端口到我的web
容器?
检查my.website.com上的端口81是否打开,例如检查防火墙规则等