Моя цель - использовать определенный порт (например, 123) с включенным SSL, и "http://example.com:123" должен быть перенаправлен на" https://example.com:123".
Я сделал это успешно с моим сервером Node.JS, но не с сервером Apache.
Вот мой код в httpd.conf:
Listen 123
<VirtualHost *:123>
ServerName example.com
SSLEngine on
SSLCertificateFile "/etc/ssl/crt/certificate.crt"
SSLCertificateKeyFile "/etc/ssl/crt/private.key"
SSLCertificateChainFile "/etc/ssl/crt/ca_bundle.crt"
</VirtualHost>
Это работает для https://example.com:123,
но когда я попробовал http://example.com:123, он показывает
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.
Тогда я тоже попробовал это:
Listen 123
<VirtualHost *:123>
ServerName example.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
Который успешно перенаправил http://example.com:123/whatever на https://example.com:123/whatever
Но когда я соединяю две вещи, как это, или наоборот:
Listen 123
<VirtualHost *:123>
ServerName example.com
SSLEngine on
SSLCertificateFile "/etc/ssl/crt/certificate.crt"
SSLCertificateKeyFile "/etc/ssl/crt/private.key"
SSLCertificateChainFile "/etc/ssl/crt/ca_bundle.crt"
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
В зависимости от того, что наступит первым, но не может работать вместе (т. Е. Оба перенаправляют http на https и SSL включены)
Как я могу заставить их обоих работать вместе? Спасибо.