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_subpath返回 404

我是 Apache 新手,所以我不知道为什么这不起作用。我也没有在 Apache 日志中看到任何错误。我在 conf 文件中遗漏了什么?

版本:

  • 阿帕奇:2.4.29
  • 操作系统: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)

相关内容