之前用 docker 弄了一堆服务,端口分别映射到了宿主机的端口上,这样在内网可以用 http 直接访问。
然后用 nginx proxy manager ,把这些宿主机的 http 端口转成了 https 再暴露到公网上访问,跑了一年都没问题。
昨天也不知道为什么突然 https-http 不通了,查了一下发现是因为在 nginx proxy manger 这个 container 内部无法 ping 通宿主机 IP ,所以每个 upstream 都超时了。
我有点茫然了,容器是跑的默认网络模式,前面一年明明可以访问宿主机 ip 的,怎么突然不行了。要怎么才能在宿主机内部 ping 通宿主机 ip ?
试过 network_mode: host 居然也不行,不知道啥情况了。我贴一下原来的 docker compose file:
version: "3.8"
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:2.10.4
restart: unless-stopped
ports:
- 9000:80
- 443:443 # Public HTTPS Port
- 8007:81 # Admin Web Port
environment:
DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
1
ginakira 364 天前 1
host.docker.internal
[Docs]( https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host) |
2
Trim21 364 天前 via Android
network_mode: host 的情况下不能设置 ports
|
3
f1ynnv2 OP @ginakira #1 非常感谢,原来这才是优雅的方案。我之前一直把宿主机 ip 固定,然后从容器内部连这个 ip ,也不知道为什么过去一年里一直正常使用。太感谢了!!
|
4
wxyrrcj 360 天前
|