代理不重定向

Proxy not redirecting

我有以下 Apache 配置文件。当有人输入 http://mywebsite.com 时,它不会将他们重定向到 https。为什么?

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass "/" "http://10.0.1.123/"
    ProxyPassReverse "/" "http://10.0.1.123/"
    ServerName www.mywebsite.com
    ServerAlias mywebsite.com
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =mywebsite.com
    RewriteCond %{SERVER_NAME} =www.mywebsite.com
    RewriteRule ^ https://mywebsite.com%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLProxyEngine on
    ProxyPreserveHost On
    ProxyPass "/" "http://10.0.1.123:80/"
    ProxyPassReverse "/" "http://10.0.1.123:80/"
    ServerName www.mywebsite.com
    ServerAlias mywebsite.com
    ServerAdmin admin_ws1@mywebsite.com
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/www.mywebsite.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.mywebsite.com/privkey.pem
</VirtualHost>
<VirtualHost *:80>
    ... 
    ProxyPass "/" "http://10.0.1.123/"
    ...
    RewriteRule ^ https://mywebsite.com%{REQUEST_URI} [END,NE,R=permanent]

ProxyPass 告诉 Apache 作为反向代理工作并将请求转发到真实服务器。 RewriteRule 而是告诉 Apache 通过重定向到网站的 HTTPS 版本来回答请求本身。显然不能同时做,所以有冲突。请删除 Proxy* 规则并仅保留端口 80 上的 Rewrite* 规则。