docker 反向代理 DNS/networking 问题

docker reverse proxy DNS/networking issues

我会试着解释并把它画出来

我想达到的目标:

抱歉画图太烂了。现在,如果我从 10.10.10.0 网络访问它,它会完美运行。问题是 DNS 将 jenkins.network.com 解析为 10.10.10.0 网络。我想通过代理返回,因为它有 SSL 终止以到达 sonarqube 服务器。有没有一种好方法可以做到这一点以将服务保留在代理后面?我是否需要使用 docker 网络创建第二个 DNS 服务器?这可能与 consul 的外部和内部服务都指向同一个域名有关吗?

编辑: 这样做是可行的,因为一切都通过代理。因此,当詹金斯点击声纳时,它认为它的 IP 确实是 10.10.10.51,它可以通过那里点击它。

我需要它做什么: 我需要它离开代理,然后通过代理返回。即:

172.16.10.2 ---- 172.16.10.1 ----- 10.10.10.50 ----- 然后代理接管路由到正确的位置(172.16.10.3:8080 或其他)

用nginx做反向代理怎么样?
如果我没看错的话,你要监听443端口
并反转为 172.16.10.1
下面是一个 nginx 配置示例

server {
listen 443;
root /data/up1; 

location / {
  proxy_pass       172.16.10.1;
  proxy_set_header Host      $host;
  proxy_set_header X-Real-IP $remote_addr;
}

希望对您有所帮助

因为你没有post你的撰写。我几乎没有做任何假设。假定的撰写如下

version: '3'

services:
  nginx:
    image: nginx
    ports:
      - 80:80
      - 443:443
    depends_on:
      - jenkins
      - sonar
  jenkins:
    image: jenkins
  sonar:
    image: sonarqube

所有这些 运行 在 10.10.10.50 上。现在,如果您在内部和外部将 DNS 设置为 10.10.10.20,则 jenkins.network.com 都将解析为 10.10.10.50。但是在 docker 网络中,您希望 jenkins.network.com 解析为容器的 IP。

所以如果以上所有都是正确的,那么下面是最简单的解决方案

version: '3'

service:
  nginx:
    image: nginx
    ports:
      - 80:80
      - 443:443
    depends_on:
      - jenkins
      - sonar
  jenkins:
    image: jenkins
    networks:
      default:
        aliases:
          - jenkins.network.com
  sonar:
    image: sonar
    networks:
      default:
        aliases:
          - sonar.network.com

在nginx镜像上我可以达到jenkins.network.com

root@be6492f18851:/# telnet jenkins.network.com 8080
Trying 172.23.0.3...
Connected to jenkins.network.com.
Escape character is '^]'.
Connection closed by foreign host.

您可以从 jenkins 和 sonar 容器中执行此操作并获得相同的结果

编辑-1

如果您希望 DNS 通过代理,您可以将别名更改为该网络

version: '3'

service:
  nginx:
    image: nginx
    ports:
      - 80:80
      - 443:443
    depends_on:
      - jenkins
      - sonar
    networks:
      default:
        aliases:
          - sonar.network.com
          - jenkins.network.com
  jenkins:
    image: jenkins
  sonar:
    image: sonar