Итак, я использую несколько веб-страниц на своем VPS и использую виртуальные хосты Apache, чтобы гарантировать, что все, кто направляется на мой сайт, отправляются на соответствующий сайт. К сожалению, кое-что, что я заметил после настройки экземпляра Jenkins, - это то, что я могу перейти к любому из этих доменов, которые указывают на мой VPS на разных vhosts и добавляют:8080 к ним, чтобы добраться до сервера Jenkins. Я хотел бы найти способ предотвратить это и разрешить доступ к серверу Jenkins только через ip:порт. Любая помощь высоко ценится!

В качестве дополнительного вопроса, могу ли я просто отбросить попытки подключения к ip:80? Благодарю.

1 ответ1

0

Я могу перейти на любой из этих доменов [...] и добавить :8080 к ним, чтобы попасть на сервер Jenkins. Я хотел бы найти способ предотвратить это и разрешить доступ к серверу Jenkins только через ip:port .

Первый шаг, о котором говорится в комментариях, состоит в том, чтобы заблокировать публичный доступ к your_ip:8080 (Jenkins все еще может работать внутри этого порта). То, как вы это сделаете, вероятно, будет зависеть от вашего VPS (хотя ваш iptables или интерфейс брандмауэра могут быть хорошим местом для начала).

Второй шаг - сделать виртуальный хост Apache "по умолчанию" для порта :XX обратным прокси-сервером (используя модуль Apache mod_proxy ) и установить цель прокси в качестве (локальной) ссылки на Jenkins, работающий на порту :8080 . Этот обратный прокси-сервер разрешает доступ к Jenkins, даже если в противном случае он будет публично заблокирован. Скорее всего, вас особенно заинтересуют официальные заметки Дженкинса на вики о том, как управлять Дженкинсом за Apache .

Заметки

  • Причина, по которой вы хотите, чтобы обратный прокси-сервер был хостом "по умолчанию" для данного порта, заключается в том, что при использовании Apache и виртуальных хостов на основе имени этот хост "по умолчанию" (обычно первый виртуальный хост с портом :XX) возвращается, когда IP запрашивается.

  • Порт для вашего обратного прокси-сервера определяется вашей записью виртуального хоста. Однако, если Apache и Jenkins работают на одном и том же сервере, этот порт не может быть таким же, как тот, на котором работает Jenkins (например, :8080).

  • Не забудьте добавить правильную директиву Listen для порта :XX в вашей конфигурации Apache.

  • Если вы используете порт :443 (SSL), ваш сертификат для этого порта должен содержать ваш IP-адрес в качестве допустимого имени. В противном случае вы получите сертификаты с предупреждениями.


Для ясности, порт :XX - это просто пример / заполнитель и означает любой порт, который вы выберете.


Есть ли способ, которым я могу просто отбросить попытки подключиться к ip:80 ?

Имейте только Apache, Listen на портах кроме :80 . Однако это нарушит все обычные порты :80 HTTP-доступ к вашим сайтам (т. Е. Если пользователь явно не набирает https:// в своем браузере или не посещает по явной ссылке https:// , он не сможет подключения).

В качестве компромисса вы можете использовать ту же технику, описанную выше (с хостом "по умолчанию" на порту :80), чтобы перенаправлять (а не прокси) запросы на ваш основной сайт или куда-либо еще (например, https://www.google.com). ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .