nginx docker 容器,在 windows 环境下,使用 host 网络模式,可以和宿主机、局域网主机进行通信。但在 MAC 下,不支持host 模式,该怎麽处理呢。
可以使用宿主机转发模式:nginx docker 容器 -> 宿主机 -> 目标主机
1.宿主机安装 socat
# 安装 socat
brew install socat
# 配置转发,宿主机监听 80 端口,转发至 192.168.31.64:80
socat TCP-LISTEN:80,fork TCP:192.168.31.64:80
# 安装过程中报错,可尝试重新安装 brew
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
如果宿主机开启80已被占用,可使用其它端口
# 宿主机监听 8080 端口,转发给目标主机 80
socat TCP-LISTEN:8080,fork TCP:192.168.31.64:80
2. nginx docker 容器配置代理
# 需要与宿主机监听的端口一致
# dnmp 环境中 host.docker.internal 可以表示宿主机
location /ISAPI {
proxy_pass http://host.docker.internal:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}