Apache プロキシ パスは HTTPS では動作しません

Apache プロキシ パスは HTTPS では動作しません

特定のサブパスをポート 19011 で実行されているバックエンド アプリケーションにリダイレクトしたいです。私の設定ファイル ( /etc/apache2/sites-available/my_domain.conf) は次のようになります。

<VirtualHost *:80>
    ServerName my_domain
    DocumentRoot /var/www/my_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ProxyPass /my_subpath/ http://localhost:19011/
    ProxyPassReverse /my_subpath/ http://localhost:19011/
</VirtualHost>

<VirtualHost *:443>
    SSLEngine On
    SSLProxyEngine On
    SSLCertificateFile /etc/letsencrypt/live/my_domain/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/my_domain/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    
    ServerName my_domain
    DocumentRoot /var/www/my_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ProxyPass /my_subpath/ http://localhost:19011/
    ProxyPassReverse /my_subpath/ http://localhost:19011/
</VirtualHost>

この構成は HTTP では機能しますが、HTTPS では機能しません。

  • http://my_domain/my_subpath意図したとおりにバックエンドアプリに送られますが、
  • https://my_domain/my_subpath404 を返します

私は Apache 初心者なので、なぜこれが機能しないのかわかりません。また、Apache ログにエラーは表示されません。conf ファイルに何が欠けているのでしょうか?

バージョン:

  • アパッチ: 2.4.29
  • OS: Ubuntu 18.04.5

答え1

結局、私の conf ファイルには何も問題がありませんでした。my_domain-le-ssl.confの下にという名前の別の conf ファイルがありました/etc/apache2/sites-availableが、これは私が Letsencrypt で SSL 証明書を作成した後に自動的に作成されたものです。その conf ファイルにはポート 443 の仮想ホストも含まれており、Apache はそれを使用して SSL 要求を処理していました。

疑問がある場合は、実行してsudo apachectl -Sアクティブな仮想ホストの構成を確認してください。私の場合は、次のような結果が返されました。

*:80 my_domain (/etc/apache2/sites-enabled/my_domain.conf:1)
*:443 my_domain (/etc/apache2/sites-enabled/my_domain-le-ssl.conf:2)
*:443 my_domain (/etc/apache2/sites-enabled/my_domain.conf:10)

関連情報