2016-07-07 29 views
1

Dockerコンテナ間のバランスを取ろうとしています。それぞれのDockerコンテナにはNginxがあり、WebサーバーにはSSL証明書があります。NginxロードバランサのアップストリームSSLとDocker

$ docker ps 

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
b1364b46632c  web   "/usr/bin/supervisord" 22 minutes ago  Up 21 minutes  0.0.0.0:8001->443/tcp webserver01 
b1364b46632c  web   "/usr/bin/supervisord" 22 minutes ago  Up 21 minutes  0.0.0.0:8002->443/tcp webserver02 

そして、私のnginxのロードバランサの設定、私はcurl -vvv https://localhost:8001またはcurl -vvv https://localhost:8002サーバーを実行する場合

upstream pool_webservers { 
    server localhost:8001; 
    server localhost:8002; 
} 

server { 
    listen 443; 
    location/{ 
     proxy_pass https://pool_webservers; 
    } 
} 

/etc/nginx/conf.d/default.conf私は、それが動作することはできません応答のSSL証明書を使用して罰金が、curl -vvv https://localhost:443実行する場合は、感謝

$ curl -vvv https://localhost:443 
* Rebuilt URL to: https://localhost:443/ 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 443 (#0) 
* Initializing NSS with certpath: sql:/etc/pki/nssdb 
* CAfile: /etc/pki/tls/certs/ca-bundle.crt 
    CApath: none 
* NSS error -12263 (SSL_ERROR_RX_RECORD_TOO_LONG) 
* SSL received a record that exceeded the maximum permissible length. 
* Closing connection 0 
curl: (35) SSL received a record that exceeded the maximum permissible length. 

を返します!

UPDATE 1: は、私が読んで最善の解決策た、それは証明書なしでロードバランサの側のSSL証明書、およびドッカーコンテナ(nginxのWebサーバー)を追加します。このよう

$ docker ps 

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS       NAMES 
ec14fa21ef3d dignajar/bludit "/usr/bin/supervisord"  2 hours ago   Up 2 hours   0.0.0.0:8001->80/tcp   webserver01 
ac14fa21ef1a dignajar/bludit "/usr/bin/supervisord"  2 hours ago   Up 2 hours   0.0.0.0:8002->80/tcp   webserver02 

ここではmydomainのSSL証明書を持つnginxのための私の仮想ホストは、あります。

upstream pool_webservers { 
    server localhost:8001; 
    server localhost:8002; 
} 

server { 
    listen 443 ssl; 
    server_name mydomain.here.com; 

    ssl_certificate   /etc/...; 
    ssl_certificate_key  /etc/...; 
    .... 

    location/{ 
     proxy_pass http://pool_webservers; 
    } 
} 

PD:同じサーバー上のすべてのものは良い考えではありません。この例の場合のみです。

答えて

2

listen行を変更してsslを指定しますか?

listen 443 ssl; 
関連する問題