Nginx 反向代理在将流量重定向到 Docker 主机时需要内部端口才能工作

Nginx 反向代理在将流量重定向到 Docker 主机时需要内部端口才能工作

我一直在使用一台 Linux 主机,其中运行着几个 docker 容器,其中一个是Nginx 代理管理器(从现在起:NPM),它只是具有友好 UI 的 Nginx。

NPM 公开端口 80 和 443,并根据指定的代理规则将流量重定向到每个容器,这是一种常规的旧反向代理配置。所有容器都被指示连接到桥接 Docker 网络,以便 NPM 可以轻松访问它们。

所有这些都有效。现在我有一个新的服务需要使用 NPM 进行公开,不同之处在于该服务不在容器上运行,而是在主机上运行,​​并且可以通过端口 3711 访问。

通过研究,我最终得到了以下建议:

extra_hosts:
    - "host.docker.internal:host-gateway"

通过将其添加到 NPM 服务下的 docker-compose 文件中,您可以允许它访问主机上的任何端口,实际上,通过在 NPM 容器内执行 ping 操作,host.docker.internal我得到了答案。问题是,在设置代理规则后,就像我经常做的那样:

在此处输入图片描述

如果我尝试通过 ci-server.domain.com 从互联网访问该服务,则会得到 502。但如果我执行 ci-server.domain.com:3711,我就可以访问它!

为什么需要将内部端口添加到域?我在容器上运行的所有其他服务都响应 80/443 并在内部重定向到它们的端口。

相关内容