#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. Большое вам спасибо. Звучит очевидно, что вы не объяснили это 😉