前回のDockerでPoundを使うはうまくいったので、そのままSSL対応までやろうかと思っていたのだがどうもNASのシステムを汚さずにやる方法がなさそうなことが分かった。
しょうがないのでPoundを諦めたら意外と便利なツールを見つけた・・・・けど凡ミスした。
2019/06/06現在,SSL認証死亡中。1週間我慢らしい。とほほ。
いままではWebサーバー上でPoundとLet’s Encrypt純正ツールを使ってSSL証明を取得していた。
今回、Synology NASの購入をきっかけに、外部アクセスを整理することにした。
経路はかなり多岐にわたるのですべてを記載することは避けるが、ざっくり書くとこんな感じ。
SSLを各サーバー毎に管理するのではなく、リバースプロキシ上でまとめて管理するという方法。期限切れ、更新など管理上のメリットがある。
今まではWebサーバー系のマシンがすべてESXiだったので、物理マシンの入り口にPoundを設置して各仮想マシンに振っていた。今回、NASでサブドメインを有効利用しようと思った場合、結局他の物理マシンにアクセスを戻すという経路的な無駄が発生することになったため、Poundを上流のマシン(今回はNAS)に移動させようと思った次第。
今まで通り、NASのDocker上にPoundの設置でいいかと思っていたのだが、どうもLet’s Encryptをまとめて片付ける方法が見つからない(正確にいえばNASのOSに変更を加えればできそうだった)。
NASのアップデート時に不安を抱えるのも嫌なので他のソリューションを探していたらいた。リバースプロキシとLet’s EncryptのSSLを自動取得、更新してくれるすごいやつ。https-portalだ。
今回はDocker-composeは使わず、SynologyのGUI上から設定した。
設定についてだが、ポート設定は例えばこんな感じ。
ローカルポート
(ルーターからの転送ポート)
|
コンテナのポート
(固定値)
|
タイプ
(固定値)
|
4443 | 443 | tcp |
880 | 80 | tcp |
ファイル/フォルダ
(Volume内に自分で作成)
|
マウントパス
(固定値)
|
タイプ
|
docker/https-portal/html | /var/www/vhosts | rw |
docker/https-portal/certs | /var/lib/https-portal | rw |
DOMAINS | XXX.YYY.JP , OOO.PPP.JP -> https://192.168.0.10 |
STAGE |
staging or
local or production
|
413 Request Entity Too Large
CLIENT_MAX_BODY_SIZE 100M (数字は任意)
504 Gateway Time-out
PROXY_CONNECT_TIMEOUT 60 (それぞれ60秒が標準なのでそれ以上に延ばす)
PROXY_SEND_TIMEOUT 60
PROXY_READ_TIMEOUT 60
コメント