前提・実現したいこと
centos7.4 でWEBサーバ(nginx1.13.5)、APサーバ(golang1.10.3-revel0.19)、DBサーバをDockerコンテナで構築しWEBサーバにhttpsで接続後、連携するAPサーバの処理結果を返却したいのですがhttpsで接続できず困っております。
httpsで接続できない理由を調べる方法をご教授頂けますでしょうか。
■現在のDocker構成 [appusr@hoge dev]$ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------- dev2_app_1 revel run mybooking Up 0.0.0.0:9000->9000/tcp dev2_db_1 docker-entrypoint.sh mysqld Up 3306/tcp dev2_web_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
発生している問題・エラーメッセージ
DockerコンテナがあるCentos7上で、wget https://www.test.com/ とするとレスポンスが帰ってくるのですが、外部からwgetやブラウザでアクセスするとレスポンスが帰ってきません。
■centos7上でのwget結果 ※レスポンス200なので証明書の設定は問題ないように思えます [appusr@hoge dev2]$ wget https://www.test.com --2018-08-06 10:25:16-- https://www.test.com/ Resolving www.test.com (www.test.com)... 140.999.999.999 Connecting to www.test.com (www.test.com)|140.999.999.999|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 35 [text/html] Saving to: ‘index.html’
外からwgetやtelnetをすると、ポート443が開いていない旨のメッセージが出力されます。
■wgetの結果 $wget https://www.test.com --2018-08-03 16:57:14-- https://www.test.com/ www.test.com をDNSに問いあわせています... 140.999.999.999 www.test.com|140.999.999.999|:443 に接続しています... 失敗しました: 接続がタイムアウトしました. ■telnetの結果 C:\Users\tarou>telnet www.test.com 443 接続中: www.test.com...ホストへ接続できませんでした。 ポート番号 443: 接続に失敗しました
しかしながら、開いているポートを確認すると443はちゃんと開いています。
■nmap結果(ポートとサービスの確認) [appusr@hoge log]$ nmap 140.999.999.999 Starting Nmap 6.40 ( http://nmap.org ) at 2018-08-06 09:57 JST Stats: 0:00:00 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan Connect Scan Timing: About 1.00% done; ETC: 09:57 (0:00:00 remaining) Nmap scan report for 140-999-999-999.vpscloud.static.arena.ne.jp (140.999.999.999) Host is up (0.0014s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https 9000/tcp open cslistener Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds ■lsof結果(ポートとプロセスの確認) [appusr@hoge log]$ sudo lsof -i:443 [sudo] password for appusr: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME docker-pr 11806 root 4u IPv6 4552081 0t0 TCP *:https (LISTEN)
webサーバの設定ファイルは以下のようになっています
nginx
1server { 2 listen 80; 3 access_log /var/log/nginx/www.test.com/access_log; 4 error_log /var/log/nginx/www.test.com/error_log; 5 6 return 301 https://$host$request_uri; 7} 8 9server { 10 listen 443; 11 server_name www.test.com; 12 13 access_log /var/log/nginx/www.test.com/ssl_access_log; 14 error_log /var/log/nginx/www.test.com/ssl_error_log; 15 16 ssl_certificate /etc/pki/tls/certs/www.test.com2018_combined.crt; 17 ssl_certificate_key /etc/pki/tls/private/www.test.com2018.key; 18 19 ssl on; 20 ssl_prefer_server_ciphers on; 21 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 22 ssl_ciphers "ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!EXPORT:!DES:!3DES:!MD5:!DSS"; 23 24 location / { 25 proxy_pass http://app:9000; 26 } 27}
試したこと
centos7なのでfirewalldの設定が問題かと思い、
無効にしてhttps接続を確認しましたが、接続不可のままでした。
$systemctl stop firewalld
外からhttpsでアクセスできない理由、もしくは調べる方法をご教授頂けますでしょうか。
補足情報(FW/ツールのバージョンなど)
dockerとdocker-compose のバージョンは以下になっています。
[appusr@hoge dev]$ docker version
Client:
Version: 18.06.0-ce
API version: 1.38
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:08:18 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.0-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:10:42 2018
OS/Arch: linux/amd64
Experimental: false
[appusr@hoge dev]$ docker-compose -v
docker-compose version 1.21.2, build a133471
回答2件
あなたの回答
tips
プレビュー