Apache настраивает перенаправление http на https под тем же портом - PullRequest
0 голосов
/ 20 января 2019

Моя цель - использовать определенный порт (например, 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 включены)

Как я могу заставить их обоих работать вместе? Спасибо.

...