带有代理和 SSL 的 Apache 没有监听端口 80

带有代理和 SSL 的 Apache 没有监听端口 80

我在 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

相关内容