自宅公開WEBサーバ復旧後の構成を見直して、SSL終端をOpenLiteSpeedからNginxに切り替えた話
前回は、Nuroのルータ交換に伴い、MAP-E方式になり、一旦は詰んだ自宅WEBサーバの公開についてGCP側でVPN(Wireguard)+リバースプロキシ(Nginx)を構築し、VPN経由で自宅WEBサーバ公開の復旧に漕ぎ着けた話をしました。
というわけでタイトルの通り、今回はその話の続きとなります。
OpenLiteSpeedからNginxにSSL終端を引っ越し
我が家は以下の構成図のような環境構成になっております。
これまではOpenLiteSpeed上にSSL終端を配置していましたが、図の通り、GCPのNginxに終端を移動しました。

Nginxは高機能(ドメインやIPやポートによって振り分け可能)なのにも関わらず、これまでStreamで全トラフィックを対向のWiregurad+Haproxyに通すだけという使い方となっていました。
そして、これまで高機能で重宝していたOpenLiteSpeedですが、Nginxが最初の入り口となるのであれば、OpenLiteSpeedはシンプルな使い方にした方がいいのではと考えました。
そこで、今回はまずNginxでSSL終端を担当させ、OpenLiteSpeedは「HTTP専用バックエンド」としてシンプル運用に切り替える方針にしました。OpenLiteSpeedからはSSL・リダイレクト設定(htaccessによる各ドメイン別のリライト箇所)を除外し、WebアプリやCMS本体としての役割に専念させることにします。
以下の通り、設定を修正していきました。
SSL取得
GCPのサーバ(Nginx)上にてletsencryptでSSLを取得します。
まずはcertbotをインストール。
pip install certbot certbot-dns-route53
次にawsのcredentials、configを設定し、以下を実行して取得します。
certbot certonly \
--dns-route53 \
-d 1banzaka.com \
-d *.1banzaka.com \
-m xxxxxxxxx@gmail.com \
--post-hook "systemctl reload nginx"
OpenLiteSpeed設定
OpenLiteSpeedのリスナーの443は全て削除。
バーチャルホスト側のSSL設定箇所も全て空欄としました。

.htaccessは以下をコメントアウト
# RewriteCond %{HTTPS} !on
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
これで、httpアクセスされてもhttpsにリダイレクトするのではなく、ポート80で来たらそのまま返す設定となりました。
Haproxy設定
以下の通り80のみ通すようにしました。
これまでは443も通していましたが、削除しました。
frontend haweb
bind *:80
mode http
default_backend back_web
backend back_web
server web1 192.168.1.xxx:80 check
Nginx設定
以下の通り、streamをコメントアウトし、httpで設定しました。
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
#stream {
# server {
# listen 443;
# proxy_pass 10.8.0.x:443;
# }
# server {
# listen 80;
# proxy_pass 10.8.0.x:80;
# }
#}
http {
# 共通SSL設定
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
# osmaniax.1banzaka.com → 10.8.0.x:80
server {
listen 443 ssl;
server_name osmaniax.1banzaka.com;
ssl_certificate /etc/letsencrypt/live/1banzaka.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/1banzaka.com/privkey.pem;
location / {
proxy_pass http://10.8.0.x:80; #HaproxyのVPNアドレス
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# 80番ポートのリダイレクト(全ドメイン共通)
server {
listen 80;
server_name osmaniax.1banzaka.com ;
return 301 https://$host$request_uri;
}
}
まとめ・振り返り
作業の途中で「リダイレクトループ」や「Bad Gateway」など発生しながらも、エラー箇所を特定して無事設定させることができました。
複雑にはなりましたが、役割を分散させることで、軽量リソースで動かすことが可能になったかと思い、今回の環境構成変更には満足しています。
今後は軽量なgitサーバをローカル環境に準備し、手元のVSCodeで編集したLambda関数のpythonのデプロイへ連動させる仕組みを構築していく予定です。