2017-09-01 85 views
2

我會盡力解釋並繪製了這一點泊塢窗反向代理DNS /網絡問題

我想達到的目標:

Diagram

很抱歉的蹩腳的油漆圖。現在,如果我從10.10.10.0網絡中找到它,它會很好地工作。問題是DNS將jenkins.network.com解析爲10.10.10.0網絡。我想通過代理回去,因爲它有SSL終止到sonarqube服務器。有沒有一種很好的方法來完成這項工作,以保持代理的服務?我是否需要創建第二臺DNS服務器,並在其上安裝Docker網絡?這可能與領事有關,使外部和內部服務指向相同的域名?

編輯: 做這樣的事情會有效,因爲一切都通過代理。所以當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或東西)

+0

所以你能用挖命令解釋這個問題? –

+0

@TarunLalwani讓我試着擴展它。基本上它的工作原理應該如此。我可以通過代理訪問服務器。問題在內部碼頭網絡中。解析sonarqube.mynetwork.com時,解析爲10.10.10.50。 Docker容器使用主機DNS來獲取它。所以詹金斯在10.10.10.50獲得了sonarqube地址,但是因爲它只關閉了172.16.10.1的代理服務器,所以它試圖在10.10.10.50處找到代理服務器,而不是172.16.10.1地址,並且你找不到路由。這有幫助嗎? – Matt

+0

所以,如果我正確的問題,你想在jenkin服務器'jenkins.network.com'解析爲'172.16.10.1'?如果是,那麼發佈你的'docker-compose'文件,如果使用任何 –

回答

0

因爲你沒有張貼你的作文。我做了很少的假設。撰寫假設低於

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。但是在碼頭網絡中,您需要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

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

而且你能做到這一點從兩個詹金斯和聲納容器和得到相同的結果

編輯-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 
+0

是的。抱歉。我沒有忘記,這個週末很忙。我正在考慮這樣的事情,但問題是我仍然需要它通過代理。其中一個原因就是如此終止。另一個是設置正確的端口。這可能嗎?我一直在尋找碼頭羣和服務發現,但還沒有確定這是否會解決我的問題 – Matt

+0

@Matt,請參閱編輯。這只是一個更新別名到代理的問題 –

+0

這就是我想我必須做的那種。我會試一試,看看它是否適合我的使用並讓你知道。謝謝 – Matt

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; 
} 

希望它有助於

+0

這個nginx配置應該放在/ etc/nginx/site-enable diretory –

+0

這就是我目前正在做的事情,唯一的事情是,當從服務通信到服務時,它沒有到內部代理的路由。所以是的,反向代理可以工作,但是因爲DNS解析爲外部網絡地址,所以無法重新進入。請參閱上面的註釋以獲取進一步解釋。再次感謝。 – Matt