apache2でwordpress+webapi両方を立ち上げ に必要なapache2の設定を記録する。
目的
- 1つのドメインでWordpressとWebAPIの両方にアクセス
apache2にリバースプロキシ設定を行い、特定のエイリアスでのリクエストのみをWebAPIに投げるようにする
環境
- OS:Debian9
- WebAPI:ASP.NET Core8
- apache2インストール済み
- proxyモジュールインストール済み
リバースプロキシ設定
以下のようにapache2の設定ファイルを編集
/etc/apache2/sites-available/000-default.config
<VirtualHost *:80>
DocumentRoot [wordpressの配置先]
ServerName [ドメイン名]
ErrorLog ${APACHE_LOG_DIR}/error_blog.log
CustomLog ${APACHE_LOG_DIR}/access_blog.log combined
ProxyPass /[エイリアス名]/ http://127.0.0.1:5000/
ProxyPassReverse /[エイリアス名]/ http://127.0.0.1:5000/
RewriteEngine on
RewriteCond %{SERVER_NAME} =[ドメイン名]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
#API ProxyReverse setting この記載はなくてもいいが、どのプロトコル(http or https)から飛ばされてきたかを知りたい場合は必要になる
<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>
Apacheエイリアスを/api/にした場合、以下のリクエストがWebAPIに転送される(今回はhttp://127.0.0.1:5000に飛ばす)
通常のリクエストについてはwordpressの内容が表示される
curl http://ドメイン名/api/
HTTPSのリバースプロキシ設定
上記の設定のみではhttpでの設定だけなので、httpsでも同様にリバースプロキシ設定を行う
同じようにhttps用に作った設定ファイルを編集
/etc/apache2/sites-available/000-default-ssl.config
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot [wordpressの配置先]
ServerName [ドメイン名]
ErrorLog ${APACHE_LOG_DIR}/error_blog.log
CustomLog ${APACHE_LOG_DIR}/access_blog.log combined
# SSLの設定は省く
SSLCertificateFile XXXXX
SSLCertificateKeyFile XXXX
Include XXXXX
ProxyPass [エイリアス名] http://127.0.0.1:5000/
ProxyPassReverse [エイリアス名] http://127.0.0.1:5000/
</VirtualHost>
</IfModule>
Apache以上
apache2の設定方法についてはこの本が役に立ちました.
他の記事はこちら