2016-10-20 105 views
2

我想知道是否有可能將docker與nginx組合成一個api網關/反向代理/ ssl終結點,而不會暴露容器背後的任何端口。即我只想使用由docker撰寫的intranet,當容器被鏈接到通過nginx進行通信時。理想情況下,唯一可公開訪問的端口將是nginx上的端口443(ssl)。這是可行的嗎?或者我必須公開我的容器上的端口?您是否可以將nginx反向代理用於docker容器而不暴露任何端口?

回答

2

是可行的。

在一個容器和nginx的另一容器只要定義你的應用程序,無論是在同一個碼頭工人,compose.yml。鏈接它們。只在nginx容器中暴露443端口。

泊塢窗,compose.yml

nginx: 
    image: nginx 
    links: 
     - node1:node1 
     - node2:node2 
     - node3:node3 
    ports: 
     - "443:443" 
node1: 
    build: ./node 
node2: 
    build: ./node 
node3: 
    build: ./node 

更多信息:http://anandmanisankar.com/posts/docker-container-nginx-node-redis-example/

問候

+0

嘿卡洛斯,謝謝你的快速反應。在這種情況下,nginx.conf文件會是什麼樣子?如何在沒有主機端口的情況下將流量代理到上游節點1,2和3? –

+0

:-S我只知道碼頭的主動性。我在nginx和docker註冊表之間配置過一次,但是其他人做了nginx配置。我可以推薦這個指南:http://anandmanisankar.com/posts/docker-container-nginx-node-redis-example/它是你正在尋找的一個完整的例子。 –

+0

如果你把一個端口沒有冒號,那還是暴露的嗎?我以前看過該指南,並且想知道這些是內部還是外部端口 –

相關問題