【问题标题】:Apache2 Rewrite/Redirect from http to httpsApache2从http重写/重定向到https
【发布时间】:2020-04-16 08:32:39
【问题描述】:

为了保护我的网站,我在 Ubuntu 上使用 apache2 和 acme 与letsencrypt。 我也想从 http://mywebsite.com 重定向到 https://mywebsite.com 但这不适用于以下配置:

文件名-xy.conf 如下:

<VirtualHost *:80>
    ServerName mywebsite.com

    ProxyRequests off
    ProxyPreserveHost On
    <Location / >
        ProxyPass "ajp://localhost:9090/"
        ProxyPassReverse "ajp://localhost:9090/"
    </Location>
</VirtualHost>

文件名-xy-ssl.conf 如下所示:

<VirtualHost *:80>
    ServerName mywebsite.com

    RewriteEngine on
    #RewriteCond %{SERVER_NAME} =www.mywebsite.com [OR]
    RewriteCond %{HTTPS} =mywebsite.com
    RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

 # forward ORDS requests to tomcat
 <VirtualHost *:443>
    ServerName mywebsite.com

    # SSL certificates settings
    #Include /etc/apache2/conf-enabled/options-ssl-apache.conf
    SSLCertificateFile /etc/apache2/ssl/mywebsite.com/fullchain.cer
    SSLCertificateKeyFile /etc/apache2/ssl/mywebsite.com/mywebsite.com.key
    SSLCertificateChainFile /etc/apache2/ssl/mywebsite.com/ca.cer

    ProxyRequests on
    ProxyPreserveHost On
    <Location / >
        ProxyPass "ajp://localhost:9090/"
        ProxyPassReverse "ajp://localhost:9090/"
    </Location>
</VirtualHost>

有了这个配置,我将导航到默认的 apache2 主页,https://mywebpage.com 工作正常。 为了自动从http://mywebsite.com 重定向到https://mywebsite.com,这个配置有什么问题?

【问题讨论】:

    标签: apache2 lets-encrypt acme


    【解决方案1】:

    为了处理这种情况,我的 http vhost 如下。我认为它也不需要启用任何新模块,只需像最后一行一样添加重定向语句:)

    【讨论】:

      【解决方案2】:

      因为您使用的是 Ubuntu 和 Apache。 LetsEncrypt 自动安装并为 apache 配置 SSL。如果您想进行手动配置,请按照以下步骤操作。

      文件name-xy.conf 应如下所示:

      <VirtualHost *:80>
          ServerName mywebsite.com
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/html
      
          ProxyRequests off
          ProxyPreserveHost On
          <Location / >
              ProxyPass "ajp://localhost:9090/"
              ProxyPassReverse "ajp://localhost:9090/"
          </Location>
          #Add the below Lines
          RewriteEngine on
          RewriteCond %{SERVER_NAME} =mywebsite.com
          RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
          RewriteCond %{HTTPS} off [OR]
          RewriteCond %{HTTP_HOST} ^www\. [NC]
          RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
          RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
      </VirtualHost>
      

      文件name-xy-ssl.conf 应如下所示:

      <IfModule mod_ssl.c>
      <VirtualHost *:443>
          ServerName mywebsite.com
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/html
      
          # SSL certificates settings
          #Include /etc/apache2/conf-enabled/options-ssl-apache.conf
          SSLCertificateFile /etc/apache2/ssl/mywebsite.com/fullchain.cer
          SSLCertificateKeyFile /etc/apache2/ssl/mywebsite.com/mywebsite.com.key
          SSLCertificateChainFile /etc/apache2/ssl/mywebsite.com/ca.cer
      
          ProxyRequests on
          ProxyPreserveHost On
          <Location / >
              ProxyPass "ajp://localhost:9090/"
              ProxyPassReverse "ajp://localhost:9090/"
          </Location>
      </VirtualHost>
      </IfModule>
      

      重启你的apache服务器sudo service apache2 restart并清除浏览器缓存和历史记录才能生效。

      【讨论】:

        猜你喜欢
        • 2016-12-09
        • 2018-02-10
        • 2015-08-11
        • 1970-01-01
        • 2017-03-14
        • 1970-01-01
        • 2019-09-10
        • 2017-10-06
        • 2017-11-04
        相关资源
        最近更新 更多