如何在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是否打开,例如检查防火墙规则等