
之前用 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 2023-11-22 22:51:39 +08:00 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 2023-11-22 22:53:30 +08:00 via Android network_mode: host 的情况下不能设置 ports |
3 f1ynnv2 OP @ginakira #1 非常感谢,原来这才是优雅的方案。我之前一直把宿主机 ip 固定,然后从容器内部连这个 ip ,也不知道为什么过去一年里一直正常使用。太感谢了!! |
4 wxyrrcj 2023-11-27 14:46:42 +08:00 |