Я могу перейти на любой из этих доменов [...] и добавить :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
). ,