はじめに
Webサーバのhttps対応、やっていますか?なんか面倒くさそうとか、証明書の取得をいちいち自分でやったりしていませんか?
そんな人のためにうってつけのものがあります。https-portalです。これを使えば、びっくりするくらい簡単にwebサーバをhttps対応させることができます。今回はそのhttps-portalの使い方を説明していきます。
https-portalとは
webサーバを糸も簡単にhttps対応してくれる優れものです。証明書の取得もDockerコンテナ内で勝手にやってくれるので便利です。
中にはnginxとlet’s encryptも含んでいます。nginxが入っているということは当然ながらリバースプロキシとしても使えます。
導入の仕方
とりあえず適当なフォルダを作って、中にdocker-compose.ymlを作りましょう
mkdir hoge
cd hoge
sudo vim docker-compose.yml
中には以下の内容を記述。
version: "3"
services:
https-portal: #https化。プロキシサーバー
image: steveltn/https-portal:1
container_name: web_https-portal
ports:
- 80:80
- 443:443
networks:
- frontend
restart: always
volumes:
- ./certs:/var/lib/https-portal
environment:
# 本番運用するときはコメントアウトを外す
# STAGE: 'production'
#ここにドメイン追加で捌ける
DOMAINS: localhost -> http://web01:80
STAGE: local
#Apacheを使う
web01:
image: httpd:2.4
container_name: website
networks:
- frontend
- webnet
restart: always
networks:
frontend:
webnet:
volumeを設定していなかったら毎回証明書を発行してしまうので設定しておく。
DOMAINSのところで、localhostへのアクセスはApacheが起動しているweb01へ行くように設定。
apacheはデフォルトでは80番ポートで待ち構えているので80番ポートに転送するようにします。
ドメイン毎にアクセス先を分けたかったら、カンマで同じような記述をDOMAINSに追記してやればOKです。
次にSTAGEについてですが、
- ローカル環境(オレオレ証明書):local
- 独自ドメインはもっているが本番ではない(オレオレ証明書):staging
- 本番(実際に証明書を発行):production
という感じです。localとstagingはオレオレ証明書になるので、アクセスするときに警告がでます。十分にこれらでテストをしてからproductionでちゃんとした証明書を取得するようにしましょう。
docker-compose up -d
コンテナを立ち上げて、上の例だとhttps://localhostにアクセスすればApacheに接続できます。
立ち上げた直後はつながらない可能性があるので、ちょっと時間を空けます。
最後に
https-portalを使えば、面倒な手続きから解放されます。よいhttpsライフを・・・