Reverse-Proxy

Apache 代理通行證不適用於 HTTPS

  • December 17, 2020

我想將某個子路徑重定向到在埠 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_subpath返回 404

我是一個 apache noob,所以我不知道為什麼這不起作用。我也沒有在 apache 日誌中看到任何錯誤。我在 conf 文件中缺少什麼?

版本:

  • 阿帕奇:2.4.29
  • 作業系統:Ubuntu 18.04.5

事實證明我的 conf 文件沒有問題。還有一個名為my_domain-le-ssl.confunder的 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)

引用自:https://serverfault.com/questions/1046371