Похоже, что Jenkins прослушивает порт 8080, поэтому nginx не может его контролировать - вам нужно перейти в конфигурационный файл jenkins и указать ему прослушивать 127.0.0.1 (только локальные соединения ), где я предполагаю, что в настоящее время он установлен на 0.0.0.0 (открыт для всех)
Вы можете ограничить адрес, к которому привязывается Дженкинс, используя - httpListenAddress
(например, localhost). См .: Запуск и доступ к Jenkins и Как я могу заставить Jenkins прекратить прослушивание удаленных подключений?
В Linux это можно настроить в JAVA_ARGS в / etc / default / jenkins
, но он может отличаться в зависимости от вашего дистрибутива Linux или операционной системы.
Вы также можете рассмотреть возможность использования плагина Reverse Proxy Auth , чтобы делегировать аутентификацию обратному прокси, который вы запускаете перед Дженкинса.
Вот несколько дополнительных примечаний:
- Убедитесь, что клиенты не могут обойти обратный прокси. Если они могут отправлять запросы напрямую Jenkins, то злонамеренный клиент может отправлять произвольное имя заголовка с произвольным значением,таким образом ставя под угрозу безопасность Jenkins
- . Убедитесь, что вы сконфигурировали обратный прокси-сервер для удаления заголовка, который вы используете для передачи аутентифицированного имени пользователя. Это предотвращает возможность злонамеренного клиента установить имя заголовка с произвольным значением, которое может нарушить безопасность.
- Если ваша авторизация проста (например, каждый действующий пользователь получает полный доступ, а все остальные не имеют доступа), тогда вам не нужно используйте этот плагин, так как вы можете выполнять как аутентификацию, так и авторизацию в обратном прокси.
- Нажмите
http: // yourserver / whoAmI
, чтобы увидеть фактические HTTP-заголовки, которые ваш Apache отправляет Jenkins. Это полезно для устранения неполадок.
Вы также можете запустить jenkins в контейнере докера и получить полный контроль над доступными портами. Я подключил 2 контейнера докеров jenkins, один из которых является nginx для обратного прокси. у хост-машины не было доступа к контейнеру jenkins, но через URL-адрес, переданный в nginx, который направил его в изолированный контейнер в той же сети докеров.