# Appache の Virtual Host を reverse proxy する(lets encript で htttps)
# 手順
# 1. Virtual Host の CNAME を設定
Virtual Host 名を server に関連付ける CNAME を登録します
# 2. Virtual Host の sites-enabled の追加
/etc/apache2/sites-enabled/ に virtualhost の設定を追加します。ファイルは /etc/apache2/sites-available/ に作成して、sites-enabled に ln -s するのがお作法です
設定ファイルは、virtual host の名前が vurtalhost, domain が domain.com とし、 reverse proxy で接続する server が port: 100003 で listen しているといて(これら3つを自分の環境に合わせて設定する) http(port:80), https(port:443) に対して以下のように作ります
<VirtualHost *:80>
# ServerName
ServerName vurtalhost.domain.com
# Proxy
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:10003/
ProxyPassReverse / http://127.0.0.1:10003/
# Log file
ErrorLog ${APACHE_LOG_DIR}/vurtalhost/domain.error.log
CustomLog ${APACHE_LOG_DIR}/vurtalhost/domain.access.log combined
</VirtualHost>
<VirtualHost *:443>
# ServerName
ServerName vurtalhost.domain.com
# Proxy
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:10003/
ProxyPassReverse / http://127.0.0.1:10003/
SSLEngine on
# Log file
ErrorLog ${APACHE_LOG_DIR}/vurtalhost/domain.ssl.error.log
CustomLog ${APACHE_LOG_DIR}/vurtalhost/domain.ssl.access.log combined env=!no_log
# Lets encript
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/vurtalhost.domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/vurtalhost.domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/vurtalhost.domain.com/chain.pem
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
log file の設定は自分の都合にあわせてください
Lets encript の設定はこの時点で(まだ登録していないのでキーファイルができていなと思いますが)先に必要です。この設定を先にしておかないと letsencript-auto がエラーになります
# 2. mod proxy の登録(必要に応じて)
まだ mod proxy を登録していない apache の場合、以下のように登録します
sudo a2enmod proxy
sudo a2enmod proxy_http
# 3.設定ファイルの apache への登録
sudo a2ensite 設定ファイル名
# 4. apache の再起動
sudo service apache2 restart
# 5. lets encript への登録
virtual host の名前が vurtalhost, domain が domain.com として以下 )
letsencrypt-auto -d vurtalhost.domain
# ポイント
- apache に mod proxy が登録されていることが必要になります
- apache の sites-enable の設定が、letsencript の登録より先に必要になります
- proxy の実態は python tornado なり go gin なりの server framework です
← Misc