<VirtualHost *:82>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
DocumentRoot "/var/www/site"
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
Это моя конфигурация виртуального хоста. Его рабочий ssl на порту 82.
Моя проблема в том, что когда я пытаюсь получить эту страницу с http, ее страница с ошибкой возврата, например:
Bad Request
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://localhost:82/
Итак, я просто хочу перенаправить http на https на порт 82. Я пытаюсь добавить:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
но он не работает, так как сначала требуется http.
Как я могу это сделать?
Спасибо.
Я знаю, что вы можете перенаправить 80 на 443 ssl, это разные порты. Но в моем случае я хочу обслуживать все на этом порту (82) через ssl. Возможно, это можно сделать с воспроизведением пользовательской страницы ошибок, так как она показывает страницу с ошибкой, когда я использую http на этом порту, но я не знаю, как
Вы не можете размещать и зашифрованный, и простой текст на одном и том же порте. Если кто-то подключается к порту обычного текста, например, к порту 80 или 81, вы можете перенаправить его на свой порт HTTPS, например, 82 в этом примере. Что-то вроде этого должно помочь:
# Plain-text rewrite:
<VirtualHost *:81>
DocumentRoot "/var/www/site"
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}:82%{REQUEST_URI}
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
# SSL config
<VirtualHost *:82>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
DocumentRoot "/var/www/site"
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
В этом случае любой пользователь, подключающийся к порту 81, будет перенаправлен на порт 82. Любой, подключающийся к порту 82, будет использовать SSL.
В файле httpd-ssl, где 8085 - это мой настраиваемый порт, добавьте «ErrorDocument 400 https: // ваш сайт: 8085 /"в конфигурацию виртуального хоста
<VirtualHost _default_:8085>
ErrorDocument 400 "https://your_website:8085/"
...