Хорошо, сеть пока что
end user (https)-> cloudfront (http)-> haproxy (http)-> jenkins
Моя установка jenkins в основном работает, но я вижу ошибку о неправильной настройке прокси, и я испытываю https://issues.jenkins-ci.org/browse/JENKINS-14313
Я прочитал следующее, но столкнулся с некоторыми непонятными проблемами.
Это то, что я придумал до сих пор
defaults
mode http
retries 3
timeout connect 120s
timeout client 60s
timeout server 60s
resolvers docker
nameserver dns "127.0.0.11:53"
frontend web
bind *:8080
default_backend jenkins
backend jenkins
cookie SERVERID insert indirect nocache
server jenkins jenkins:8080 check cookie s1 resolvers docker resolve-prefer ipv4
acl h_cfp_exists req.hdr(CloudFront-Forwarded-Proto) -m found
acl response-is-redirect res.hdr(Location) -m found
http-request set-header X-Forwarded-Proto https if h_cfp_exists
Вот заголовки (у заголовков есть домен и безопасные строки, искаженные, косые черты и имена сохранены), полученные jenkins
POST /j_acegi_security_check HTTP/1.1
Host: jenkins.default.mydomain.tld
X-Amz-Cf-Id: _UoBjzMmiJvkMZOnRbt6Ai2rBZ4hm1jAz_5IGAi3OwI9TxQ5tCW5Bg==
Content-Length: 339
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 OPR/49.0.2725.64
Via: 2.0 9a063989aee4dbd9381a2cf612c17c08.cloudfront.net (CloudFront)
Cookie: JSESSIONID.0262fa7d=node01f8yc6mw0a5p6gv09wvy275j610.node0; JSESSIONID.9f7e10bd=node01i3tan71bopiv2ufhmos5dccq83.node0; JSESSIONID.d3f1b83b=node0nqkbin0vx70f12cdr9kmgatyk6.node0
X-Forwarded-For: 2605:6000:1025:bd:31c7:df4d:6bd6:8b9c
CloudFront-Is-Mobile-Viewer: false
CloudFront-Is-Tablet-Viewer: false
CloudFront-Is-SmartTV-Viewer: false
CloudFront-Is-Desktop-Viewer: true
CloudFront-Viewer-Country: US
Accept-Language: en-US,en;q=0.9
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: https://jenkins.default.mydomain.tld/
CloudFront-Forwarded-Proto: https
Accept-Encoding: gzip, deflate, br
cache-control: max-age=0
origin: https://jenkins.default.mydomain.tld
upgrade-insecure-requests: 1
content-type: application/x-www-form-urlencoded
X-Forwarded-Proto: https
и ответ, полученный браузером
content-length:0
date:Wed, 10 Jan 2018 15:45:21 GMT
expires:Thu, 01 Jan 1970 00:00:00 GMT
location:https://jenkins.default.mydomain.tld/
server:Jetty(9.4.z-SNAPSHOT)
set-cookie:JSESSIONID.d3f1b83b=node01o.node0;Path=/;Secure;HttpOnly
set-cookie:ACEGI_SECURITY_HASHED_REMEMBER_ME_COOKIE=Y2N1c2hpbmc6MTUxNjgwODcyMTQ5OTpmMmIzNDVkYjE2ODdhRlMGJmNWYz;Path=/;Expires=Wed, 24-Jan-2018 15:45:21 GMT;Max-Age=1209600;Secure;HttpOnly
status:302
via:1.1 6d16d2818.cloudfront.net (CloudFront)
x-amz-cf-id:WZMDdUGVK4fRg6E04gN2sr9RIgKDqeK0-kAANBbeu7eB3uFv9cAkQw==
x-cache:Miss from cloudfront
x-content-type-options:nosniff
Затем я вижу следующий GET /login HTTP/1.1
но я не понимаю, зачем он это делал. Также, возможно, интересно, что в глобальных настройках конфигурации нет установленного по умолчанию представления, на самом деле конфигурация для него, похоже, отсутствует. доступ через http, через haproxy все нормально Что ж, предупреждение все еще отображается, кажется, я могу исправить это, установив jenkins uri для использования http: // IP: порт.
как мне исправить мою настройку haproxy, чтобы логин jenkins не отображал форму входа, где должна быть панель управления? может ли кто-нибудь объяснить преобразования, которые должны быть выполнены без привязки к прокси-технологии, и почему (например, в примерах показано 127.0.0.1:8080, но htat, очевидно, не сработает для меня, однако, поскольку Location возвращает https, я ' Я не знаю, зачем мне это делать)?