Дженкинс за балансировщиком сетевой нагрузки AWS

#amazon-web-services #jenkins #networking #amazon-vpc #nlb

#amazon-веб-сервисы #дженкинс #сеть #amazon-vpc #nlb

Вопрос:

Я развернул Jenkins в кластере ECS и настроил EFS на JENKINS_HOME. Доступ к Jenkins осуществляется только через корпоративную сеть через AWS Private Link (конечная точка VPC), поэтому мне нужно использовать NLB для доступа к моему Jenkins. Я могу получить к нему доступ по протоколу HTTPS (сертифицирован в ACM и связан с NLB), но Дженкинс возвращает HTTP 302 и сообщает, что доступ к URL-адресу осуществляется по протоколу HTTP, и я получаю тайм-аут, поскольку у меня есть только допустимая конфигурация для HTTPS.

Кто-нибудь знает, как решить эту проблему?

Мой кластер относится к типу запуска EC2, и по соображениям управления я не могу получить доступ к машинам кластера.

Пример запроса:

 Request URL: https://jenkins.mydomain.com/blue/organizations/jenkins
Request Method: GET
Status Code: 302 Found
Remote Address: 172.168.18.7:443
Referrer Policy: same-origin
  

Ответ

 Content-Length: 0
Date: Tue, 27 Oct 2020 14:28:16 GMT
Location: http://jenkins.mydomain.com/blue/organizations/jenkins/
Server: Jetty(9.4.30.v20200611)
X-Blueocean-Refresher: f24c80d9
X-Content-Type-Options: nosniff
  

Мой сценарий таков: локальная сеть -> частная ссылка -> конечная точка vpc -> балансировщик сетевой нагрузки (TLS 443) -> перенаправить Jenkins TPC 8080.

Комментарии:

1. Используете ли вы завершение TLS в своем NLB? ссылка: aws.amazon.com/blogs/aws /…

2. Да, я перенаправляю трафик на мой Jenkins в кластере, используя tpc 8080. Он отвечает в первом запросе, но при вводе какой-либо другой конфигурации или регистрации он возвращает HTTP 301

3. Я решил эту проблему, используя nginx в качестве обратного прокси. Я поставил их обоих на одну и ту же задачу и использовал функцию ссылок. В конфигурации ngix я использовал приведенную ниже конфигурацию, и она работала отлично. proxy_set_header X-Forwarded-Proto https;