docker反向代理DNS /网络问题

时间:2017-09-01 14:23:30

标签: docker networking proxy consul

我会尝试解释并画出来

我想要实现的目标:

Diagram

抱歉蹩脚的油漆图。现在,如果我从10.10.10.0网络点击它,它的效果非常好。问题是DNS将jenkins.network.com解析为10.10.10.0网络。我想通过代理返回,因为它有SSL终止来到sonarqube服务器。是否有一个很好的方法来实现这一点,以保持代理服务?我是否需要使用docker网络创建第二个DNS服务器?是否可以与consul一起使外部和内部服务指向同一域名?

编辑: 做这样的事情会起作用,因为一切都通过代理。因此,当jenkins击中声纳时,它认为它的ip确实是10.10.10.51并且它可以通过那里击中它。 enter image description here

我需要它做什么: enter image description here 我需要它离开代理,然后通过代理返回。 IE:

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

2 个答案:

答案 0 :(得分:2)

因为你没有发布你的作品。我做了一些假设。假设的假设低于

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

答案 1 :(得分:0)

如何使用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;
}

希望有所帮助