https://example.com
我有一台运行 Debian 10 的服务器。由于 LetsEncrypt 证书,它运行 Apache 2.4,以便在 下访问 Web 服务。
但是它还运行一个应用程序 (Subsonic),该应用程序在端口 4040 上提供 Web UI,在其自己的 Web 服务器下,因为我没有为其设置 vhost,而且当 Apache 停止时它仍然可以访问。因此,目前该应用程序可通过 HTTP 访问http://example.com:4040
。
我知道如何为 Apache vhost 添加 SSL 支持,但如何为该应用程序添加 HTTPS 支持,以便可以在https://example.com:4040
或上访问它https://example.com:1234
?
另外,我是否应该为该域名使用与现有证书不同的 SSL 证书?
答案1
在应用程序前面添加一个反向代理,并在此代理上配置 HTTPS。方便的是,您运行的 Apache 可以愉快地为您进行反向代理。
目前,您无法使用端口 4040,因为该端口已被应用程序占用,因此除非您可以更改应用程序的端口或将其仅绑定到本地主机(127.0.0.1 等),否则您必须在其他端口上运行此应用程序。请注意,如果您想通过 HTTPS 运行此应用程序,则没有必要让它仍然可以通过不安全的 HTTP 访问,因此最好将此应用程序配置为绑定到本地主机并使其仅通过反向代理访问。
您需要ProxyPass
一系列配置选项来创建反向代理。以下是一个不完整的示例:
Listen <Public IP address of server>:4040
<VirtualHost *:4040>
Protocols h2 h2c http/1.1
ServerName example.com
SSLEngine On
# LetsEncrypt certificates (if not configured in another file)
# SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
# SSLCertificateKeyFile /etc/letsencrypt/live/eample.com/privkey.pem
# Include /etc/letsencrypt/options-ssl-apache.conf
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:4040/
ProxyPassReverse / http://127.0.0.1:4040/
</VirtualHost>
证书需要具有客户端用来在其主题备用名称扩展中嵌入连接的主机名,因此,由于您似乎没有建议使用不同的主机(example.com
两种情况下),因此您不需要新的证书。