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:同じサーバー上のすべてのものは良い考えではありません。この例の場合のみです。