Прокси не перенаправляет

#apache #ssl #redirect #proxy

#apache #ssl #перенаправление #прокси

Вопрос:

У меня есть следующий конфигурационный файл 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>
 

Ответ №1:

 <VirtualHost *:80>
    ... 
    ProxyPass "/" "http://10.0.1.123/"
    ...
    RewriteRule ^ https://mywebsite.com%{REQUEST_URI} [END,NE,R=permanent]
 

Указывает ProxyPass Apache работать как обратный прокси и перенаправлять запрос на реальный сервер. RewriteRule Вместо этого указывает Apache ответить на сам запрос перенаправлением на HTTPS-версию сайта. Очевидно, что он не может выполнять оба одновременно, поэтому возникает конфликт. Пожалуйста, удалите Proxy* правила и сохраните только Rewrite* правила на порту 80.

Комментарии:

1. Большое вам спасибо. Звучит очевидно, что вы не объяснили это 😉