Назад | Перейти на главную страницу

Глобальное перенаправление порта 80 на 443

Я хотел бы настроить свой Linux-бокс так, чтобы все, что попадает в порт 80, просто сообщалось, спрашивало порт 443. Я хочу, чтобы это было независимо от домена, IP или каких-либо конкретных деталей. Если его можно запросить у порта 80, следует сказать нет. Мы делаем это на 443.

Я буду использовать Apache на 443, поэтому могу достаточно легко привязать его к 80, но не вижу решения в том, чтобы включать Apache на порт 80.

Для ясности, я ищу решение, которое не потребует изменений в vhosts. Я понимаю глобальные перенаправления, которые можно передать по наследству. Это требует изменения виртуального хоста. Я ищу что-то более всеобъемлющее и менее склонное к «Ой, я забыл эту строку, и теперь порт 80 показывает мои данные в незашифрованном виде».

Как бы вы подошли к решению этой проблемы? iptables, apache, настраиваемый сценарий оболочки с netcat и немного волшебства, чтобы заставить его перейти на SSL?

Попробуйте добавить это в свой httpd.conf;

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Отсюда ->http://www.sslshopper.com/apache-redirect-http-to-https.html

Здесь используется mod_rewrite, поэтому убедитесь, что он у вас установлен заранее.

Рекомендуемый метод заключается в том, чтобы установить это в файле VHOST для каждого сайта, как описано здесь;

http://wiki.apache.org/httpd/RedirectSSL

Тем не менее, вики Apache подробно документирует вышеупомянутый метод перезаписи;

http://wiki.apache.org/httpd/RewriteHTTPToHTTPS

Перенаправление порта 80 на 443 тривиально с iptables, но из вашего описания вы явно не хотите запускать http на порту 443: вы хотите, чтобы люди перенаправлялись с http на https.

Вы четко знаете, что это можно сделать в Apache для каждого виртуального хоста, но вы предпочитаете не использовать это, чтобы избежать проблем с настройкой; в противном случае я бы рекомендовал решение sgtbeano.

Исходя из этого, я бы рекомендовал вам прекратить использовать Apache на порту 80 и запустить другой веб-сервер на порту 80, который выполняет простое перенаправление.

Вы даже можете запустить отдельный экземпляр Apache на порту 80 с другим каталогом конфигурации. Это также позволит избежать проблем с конфигурацией, но может быть труднее поддерживать (не многие люди ожидают, что на одном хосте 2 разных экземпляра Apache с 2 разными наборами файлов конфигурации). В этом случае вы можете использовать конфигурацию sgtbeano для экземпляра порта 80.

поскольку HTTP и HTTPS - это два разных протокола, вы не можете просто перенаправить iptables tcp / 80 на tcp / 443, так как apache не понимает HTTP на tcp / 443

поэтому HTTP-запрос должен попасть в apache / nginx / etc, а затем быть «перенаправлен» на уровень приложения. это будет сделано на nginx с помощью "redirect / https://domain.name/"или используя правило перезаписи на apache