Назад | Перейти на главную страницу

Jenkins с Nginx, нужно слушать только порт https

У меня есть экземпляр 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