apache2でwordpress+webapi両方を立ち上げ

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の設定方法についてはこの本が役に立ちました.

他の記事はこちら

コメントする