禁止〖IP + 端口〗访问〖Docker〗〖不暴露端口〗(再续)
重新安装 Joplin 过程中,询问 ChayGPT 得知,定义 Docker YML 网络属性,需要单独定义。然后 app 和 db 分别引用定义的网络属性即可。
|
1 2 3 4 5 6 7 8 9 10 11 |
version: '3' services: app: image: your_image_name networks: - nginx_network #定义为 Ningx 所在网络 # 其他参数 networks: nginx_network: #定义为 Ningx 所在网络 external: true |
(2024.06.18)
禁止〖IP + 端口〗访问〖Docker〗〖不暴露端口〗(续)
按照套路重新安装 recketchat 之后,发现并不能正常访问,经过排查,是 db 也需要定义网络参数,确保都在同一网络下,才可以。
(2024.06.18)
禁止〖IP + 端口〗访问〖Docker〗〖不暴露端口〗
这一切诉求之来源,皆由 VPS 无防火墙造成。目的无非是,规避暴露端口,禁止外界直接访问 IP + 端口。各种防火墙方法,及各种咨询 ChatGPT 之后,均无效。可仍有执念。最终受一篇教程启发,当然关键还是 ChatGPT 立功,再稍作变通,如得所愿。幸甚,幸甚。
关键
关键就在于,既然要禁止外界通过 IP + 端口直接访问 Docker 内某项服务,那么从根源上来讲,启动 Docker 内某项服务时,不去定义 -p 参数,不去定义运行端口,转而由 --net 参数代替,定义 Docker 内 Ningx 所在网络,这样一来,在启动服务后,倘若不去反代,则无法访问此项服务,反代参数定义服务名称 + 所在 Docker 内端口。所有关键信息点均来自 ChatGPT 之答案,不过有所变通,答案告知定义新网络,服务和 Nginx 分别在启动时定义到这个新网络,然后反代。变通以后,直接让服务加入到现有 Nginx 之网络,进而反代出去。
代码
|
1 2 3 4 5 6 |
#某 Docker 服务 docker run -d \ ······ --net nginx_network \ #定义为 Ningx 所在网络 ······ |
|
1 2 3 4 5 6 7 |
#配置 Docker 内 Nginx 反代 location / { ······ proxy_pass http://service_name:port; #定义服务名称和端口 ······ } |
(2024.06.14)


文章评论