Я пытаюсь запустить Jenkins за nginx. Дженкинс работает в контейнере Docker, прослушивая порт 8080 из каталога / jenkins. В моем контейнере nginx этот контейнер Jenkins связан как имя хоста "jenkins", поэтому в его контексте Jenkins доступен через http: // дженкинс: 8080 / дженкинс.
Я пошел по шагам в Запуск Jenkins из папки с шифрованием TLS и таким образом мой site-config
содержит это:
location ^~ /jenkins/ {
sendfile off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://jenkins:8080/jenkins/;
proxy_redirect http:// https://;
proxy_max_temp_file_size 0;
client_max_body_size 64m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
Теперь я пытаюсь получить доступ к nginx с localhost и вызываю https: // localhost / Дженкинс представляет мне Дженкинса. Однако когда я перехожу в «Управление Jenkins», я получаю сообщение о том, что мой обратный прокси-сервер настроен неверно. Я попытался
curl -k -iL -e https://localhost/jenkins/manage \
https://localhost/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/test
что дает мне 404 с http://localhost/jenkins/manage vs. https:
.
Когда я добавляю
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Ssl on;
сообщение изменится на https://localhost/jenkins/manage vs. https:
Что мне не хватает?
У меня была такая проблема только сейчас, и что решило ее для меня, описано в https://stackoverflow.com/a/20514632/1446479
Моя НЕ рабочая конфигурация использовала эту строку:
proxy_pass http://127.0.0.1:8015/jenkins/;
Но моя рабочая конфигурация теперь выглядит так:
location /jenkins/
{
proxy_pass http://127.0.0.1:8015$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
port_in_redirect off;
proxy_redirect http://my.host/jenkins /jenkins;
proxy_connect_timeout 300;
}