У меня есть экземпляр Jenkins в AWS EC2. Я установил Jenkins с портом 8080
. И я имею nginx
как reverse-proxy
.
Мой jenkins.mydomain.com.conf
:
server {
listen 80;
server_name jenkins.mydomain.com;
server_name_in_redirect on;
location /.well-known {
root /usr/share/nginx/html/letsencrypt-pig/jenkins.mydomain.com;
}
location / {
rewrite ^ https://$server_name$request_uri? permanent;
#proxy_pass http://127.0.0.1:8080;
proxy_redirect 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;
}
}
server {
listen 443 ssl;
server_name jenkins.mydomain.com;
# server_name_in_redirect on;
access_log /var/log/nginx/ssl-access.log;
error_log /var/log/nginx/ssl-error.log;
#ssl on;
ssl_certificate /etc/letsencrypt/live/jenkins.mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jenkins.mydomain.com/privkey.pem;
location /.well-known {
root /usr/share/nginx/html/letsencrypt-pig/jenkins.mydomain.com;
}
location / {
proxy_pass http://127.0.0.1:8080; # internal ip
# add_header Access-Control-Allow-Origin *;
proxy_redirect 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;
}
}
Все хорошо. Оно работает. Но я не хочу открываться 80 port
в группе безопасности. Итак, когда я удаляю 80 port
из security group
, Я могу смотреть https://jenkins.mydomain.com
с участием Login page
Но когда я делаю Sign in
действие, у меня есть timeout
а потом
У меня есть эти строки в моем Дженкинсе location
блок:
proxy_set_header X-Forwarded-Host "jenkins.example.com";
proxy_set_header X-Forwarded-Proto "https";
Последнее особенно важно, он сообщает Дженкинсу, что он должен генерировать https
URL-адреса.
Дополнительная информация о запуске Jenkins за обратным прокси nginx: https://wiki.jenkins.io/display/JENKINS/Jenkins+behind+an+NGinX+reverse+proxy