nginx Docker:为什么发布80:80有效,但80:8080无效?

0ejtzxu1  于 2023-05-06  发布在  Nginx
关注(0)|答案(1)|浏览(390)

TL;DR在执行docker run -it --rm -d -p 80:8080 --name web nginx时只能通过端口8080访问容器,我想知道为什么。在执行docker run -it --rm -d -p 80:80 --name web nginx时工作(能够通过端口80访问容器)。
大家好!
我在Raspberry Pi 4上运行Docker,我想用它来托管几个不同的服务。我想使用Nginx作为反向代理,以便更好地保护我的设备。
按照this设置Nginx容器的指南,我运行了docker run -it --rm -d -p 8080:80 --name web nginx,只是想看看它是否按我预期的那样运行。这很有效(当我去:8080时,它显示了“欢迎来到nginx”页面)。
但是,我不想必须键入:8080;我想自动重定向HTTP请求,而不必输入端口号,所以我尝试了docker run -it --rm -d -p 80:8080 --name web nginx。没有运气-出于某种原因,我只能得到欢迎页面,如果我指定:8080仍然。
我终于能够通过绑定端口80:80(例如:docker run -it --rm -d -p 80:8080 --name web nginx),但我有点困惑,为什么它的工作,而不是80:8080.
根据我的理解,docker run -p 80:8080应该将设备的端口80发布到容器的暴露端口8080,该端口应该将所有HTTP流量转发到该容器。为什么我仍然只能通过8080端口访问Nginx?我错过什么了吗?

ni65a41a

ni65a41a1#

nginx监听端口80。因此,-p 8080:80将主机端口8080转发到容器的端口80。-p 80:8080则相反:将主机的端口80(http)转发到容器的端口8080。但是在你的容器中没有任何东西监听端口8080。
如果你想将你的主机的http端口80转发到容器的端口80(nginx正在监听),使用-p 80:80
使用docker指定端口转发的语法是:hostip:hostport:containerport; hostip:部分是可选的,因此hostport:containerport也可以单独工作

相关问题