我会尝试解释并画出来
我想要实现的目标:
抱歉蹩脚的油漆图。现在,如果我从10.10.10.0网络点击它,它的效果非常好。问题是DNS将jenkins.network.com解析为10.10.10.0网络。我想通过代理返回,因为它有SSL终止来到sonarqube服务器。是否有一个很好的方法来实现这一点,以保持代理服务?我是否需要使用docker网络创建第二个DNS服务器?是否可以与consul一起使外部和内部服务指向同一域名?
编辑: 做这样的事情会起作用,因为一切都通过代理。因此,当jenkins击中声纳时,它认为它的ip确实是10.10.10.51并且它可以通过那里击中它。
我需要它做什么: 我需要它离开代理,然后通过代理返回。 IE:
172.16.10.2 ---- 172.16.10.1 ----- 10.10.10.50 -----代理然后接管到正确的位置(172.16.10.3:8080或其他东西)
答案 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;
}
希望有所帮助