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

Перенаправление с http на https

У меня есть установка Hudson / Jenkins, которая работает на порту 443, поэтому я могу получить к ней доступ с помощью https://ci.mydomain.com. У меня нет веб-сервера, работающего на порту 80, например Apache Httpd, но я хочу, чтобы пользователь вводил http://ci.mydomain.com он должен быть перенаправлен на https://...

Я пробовал это с iptables:

/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 443
/sbin/iptables-save
chkconfig --level 35 iptables on

Но браузер сообщает мне, что соединение не удалось. Поэтому я не хочу устанавливать веб-сервер Apache, я хочу только перенаправление с http://ci.mydomain.com к https://ci.mydomain.com.

iptables НЕ ЯВЛЯЕТСЯ то, что вы хотите здесь - вы отправляете браузер, который ожидает передачи простого старого HTTP (просто скучного обычного текста), на сервер, который передает HTTPS (зашифрованный и ОЧЕНЬ запутанный для вашего браузера).

Вы хотите Перенаправление серии 300 выданный вашим веб сервер чтобы отправить клиента по соответствующему URL https: //. Если вы используете Apache, вы можете комбинировать это с SSLRequireSSL директива (Ручной ввод), чтобы ваши клиенты не могли получить доступ к ресурсам, которые должны быть зашифрованы по незашифрованным каналам.

HTTP и HTTPS - это разные протоколы уровня приложения, поэтому вы не можете просто перенаправить на транспортном уровне. Вы должны настроить Apache или Nginx или что-то еще на порту 80, чтобы выполнить правильное перенаправление HTTP с использованием Location заголовок.

Настройте относительно пустой VirtualHost, прослушивающий 80, который ничего не делает, кроме

RewriteEngine On

RewriteRule (. *) https://foo.com1 доллар

Переход с http на https - это больше, чем просто переключение портов. Это два разных протокола, и ваша установка Hudson / Jenkins ищет https, а не http.

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

Вы, вероятно, зашли в тупик, поскольку http и https достаточно различаются, и простое перенаправление порта не сработает.

Если это продолжение этот вопрос, проблема в том, что вы пытаетесь запустить Jenkins на привилегированном порту (<1024). Вы смешиваете здесь порт 80 и 443 в своем вопросе.

Запустите Jenkins на порту 8443 (что обычно для непривилегированного порта HTTPS) и используйте iptables для перенаправления с / на 443 и 8443.

Для перенаправления с http:// к https://, Apache и mod_rewrite это хороший выбор, как предлагали другие. В качестве альтернативы любой крошечный веб-сервер должен иметь возможность отправлять перенаправление (статус HTTP 301 или 302) с Location заголовок.