2017-07-03 61 views
1

我的Nginx不在docker鏡像中。我的應用程序處於docker映像中。他們都住在同一臺服務器上。如何使用Nginx連接到Docker鏡像中的應用程序?

我不希望Nginx處於Docker鏡像,因爲它對我來說配置看起來非常複雜。但我的應用程序正在碼頭集裝箱中運行。

如何配置Nginx使用我的應用程序正在運行的泊塢窗圖像?

這裏是我的Nginx的配置文件:

server { 
     listen   80; 
     server_name my.domain.com; 
     return   301 https://$server_name$request_uri; 
} 

server { 
     listen   443 ssl; 
     server_name www.nicolasxu.space nicolasxu.space; 
     # add Strict-Transport-Security to prevent man in the middle attacks 
     add_header Strict-Transport-Security "max-age=31536000"; 


     ssl_certificate /root/.ssh/nicolasxu.space.cert; 
     ssl_certificate_key /root/nicolasxu.space.key; 
     [....] 
} 
+0

nginx是否是服務應用程序的反向代理?或者一個經典的Web服務器? –

+0

@FrançoisMaturel反向代理,而不是經典服務器。謝謝! –

回答

2

要輕鬆設置nginx的(在泊塢窗主機)作爲一個dockerized Web應用程序的前反向代理,你可以在你的Web應用程序和路線TRAFIC只是--publish港到此端口:

  1. --publish參數運行的泊塢窗容器主機端口綁定容器的Web應用程序的端口,例如與詹金斯容器我會做:

    docker run --publish 127.0.0.1:8080:8080 --name jenkins jenkins 
    

這對綁定的主機的本地主機的127.0.0.1容器的端口8080到端口80(這避免了8080端口開放給任何人,如果你不使用任何的防火牆)。 Docker User Guide詳細解釋瞭如何操作Docker中的端口。

  • 轉發所有傳入TRAFIC作爲reverse proxy到本地容器的端口(8080在我的例子)

    server { 
        ... 
    
        listen   443 ssl; 
        server_name www.nicolasxu.space nicolasxu.space; 
        ... 
    
        ssl_certificate ... 
    
        location/{ 
          # forward all the trafic to docker container's published port 
          proxy_pass http://localhost:8080; 
        } 
    } 
    
  • 設置上nginx的SSL和路由通過HTTP傳輸到dockerized webapp是一種很好的做法,並且會像魅力一樣工作。


    編輯

    爲了獲得最大的性能,你也可以使用:

    當使用--network=host,搬運工將指示使用的主機網絡棧的容器。您不需要在主機上安裝--publish端口,因爲它是相同的網絡堆棧,Web應用程序將在其本地端口上可用。

    +0

    這是很多新的知識。非常感謝你!讓我先嚐試一下! –

    相關問題