【502报错】Docker容器访问宿主机网络


问题描述

nginx是使用docker方式运行,再使用nginx进行反向代理时,始终提示502错误,只能将域名指向公网IP+端口,这样并不能起到隐藏端口的目的,防火墙还是需要将6806(思源)的端口开放

想到docker的localhost相当于把宿主机作为路由器获得的更低一层的IP地址,遂百度标题, 果然有大佬提出了解决方案

贴上原文

Docker容器访问宿主机网络

解决方案

docker默认创建的虚拟网卡名字为docker0,在宿主机执行下面这句代码
ip addr show docker0​

image-20240321173908900

172.17.0.1即宿主机IP

获取所有docker容易对应的ip地址

docker ps -q | xargs -n 1 docker inspect --format 'Container {{ .Name }} => IP {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

最终配置

location / {
        proxy_pass         http://172.17.0.1:6806;
    }

修改配置,然后关闭6806端口,完美解决


评论
  目录