我在 ubuntu 18.04 中运行 apache 2.4.29,并且在 000-default.conf 中有以下设置
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error_ssl.log
CustomLog ${APACHE_LOG_DIR}/access_ssl.log combined
SSLEngine on
SSLProxyEngine On
SSLCertificateKeyFile /pathtokey/privkey.pem
SSLCertificateChainFile /pathtokey/chain.pem
SSLCertificateFile /pathtokey/fullchain.pem
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
#ErrorLog ${APACHE_LOG_DIR}/error.log
#CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Apache 正在充当 tomcat 服务器的代理,两者都使用 SSL。如果我使用带有 https 的 URL,apache 可以正常工作,但是当我尝试使用 http 时,我无法重定向到 https。我检查了一下,似乎 apache 不监听或处理来自端口 80 的连接(我也用 telnet 检查过了)
如果我删除 SSL 设置,并在端口 80 中保留一个虚拟主机,那么我就可以在没有 SSL 的情况下工作,在端口 80 中工作正常,但是当我仅启用 SSL 时,我可以使用带有 https 的服务器
有没有什么办法可以使用 http 并重定向到 https?
答案1
我发现了问题:我在 IPTABLES 中有一个路由,它将流量从端口 80 发送到 8080