# Appache の Virtual Host を reverse proxy する(lets encript で htttps)

Misc の一覧に戻る

# 手順

# 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 です

Last Updated: 2020/6/12 2:16:58