问个简单的问题

接触linux不多,现在遇到这样一个问题想请教论坛的各位

我的nginx直接安装在主机上(apt-get),现在有一个docker容器,暴露了8080端口,我要的目的是,只能通过ip:443通过nginx反代容器,而ip:8080是不能被访问的

  1. 如果容器链接的host网络,nginx应该怎么样设置,是否需要修改iptables来限制
  2. 如果容器链接的bridge呢

127.0.0.1:8080:8080这样映射只能本地访问 用Nginx反代

2 个赞

那这应该是容器链接的host网络?

问问 gpt

问问gpt吧

1 个赞

host 网络相当于和宿主机一样了,不需要映射端口,端口是否开放只归防火墙管

bridge 网络就需要映射端口了,映射的端口默认会修改 iptables 配置在防火墙上打洞,如 ufw 之类的防火墙应用无法禁用映射的端口,需要手动调整 iptables 配置来关闭端口

我是每次部署服务器安装 Docker 时都会先参照这篇文章修改 ufw 配置来防止 Docker 在防火墙上打洞 Docker防火墙管理 | Escape (用的不是 ufw 就得自己想办法限制容器打洞了 :face_with_peeking_eye:

容器不多且保证端口不冲突就直接 host 网络吧,和直接在主机上安装的没区别

问过才过来问的

评论区说127.0.0.1:8080:8080,这个有用,能通过nginx反代,而且ip:8080是访问不了的

能用就好,我是习惯用 8080:8080 默认全映射了 :upside_down_face:

如果是host网络,那怎么样开放container的端口?expose 8080?那ufw deny 8080,然后nginx反代localhost:8080,这样子做吗

host 网络的话我记得是默认占用容器所需要的全部端口,容器那边不需要额外配置
本机反代的话直接127.0.0.1:端口就好(不推荐 localhost
有需要用服务器ip:端口形式访问就开放防火墙端口,不会自动开放端口

好的,感谢