2017-07-03 7 views
1

私のNginxはドッカー画像ではありません。私のアプリはドッカーのイメージです。彼らは両方とも同じサーバーに住んでいます。Dockerの画像でNginxを使ってアプリケーションに接続するにはどうすればいいですか?

Nginxをドッカーのイメージに入れたくないのは、構成が面倒だからです。しかし、私のアプリはドッカーのコンテナで動いています。

私のアプリが実行されているドッカー画像を使用するように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のために、あなたのWebアプリケーションとルートのちょうど--publishポートでしdockerized WebアプリケーションTRAFICの前でリバースプロキシとしてこのポートに:

  1. は、私はどうしたらジェンキンスコンテナと、たとえば、コンテナのWebアプリケーションのポートとホストポートをバインドする--publish引数を使用してドッキングウィンドウコンテナを実行します。

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

これは(これはあなたが任意のファイアウォールを使用していない場合、ポート8080は、誰にもオープンする回避)ローカルホストの127.0.0.1ホストマシンの上のポート80にコンテナのポート8080をバインドします。 Docker User Guideは、Dockerでポートを操作する方法を詳しく説明しています。

(私の例では8080)ローカルコンテナあなたのポートへ reverse proxy

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を設定し、ルーティングとフォワード

  • すべての着信TRAFICを

      ドッキングされたwebappにHTTPとしてのトラフィックは良い習慣であり、魅力的に働くでしょう。


      編集

      最大の公演のために、あなたも使用することができます:--network=hostを使用している場合

      、ドッキングウィンドウは、ネットワークスタックホストを使用するようにコンテナに指示します。同じネットワークスタックであるため、ホスト上のポートは--publishである必要はなく、ネイティブポート上でWebアプリケーションを使用できます。

  • +0

    新しい知識がたくさんあります。どうもありがとうございました!私はまずそれを試してみましょう! –

    関連する問題