Как перенаправить порт 80 и 8080 на 443 с помощью nginx для сервера Jenkins

Я пытаюсь перенаправить все, что идет на порт 80 и 8080, на 443 (https) с помощью nginx. Это для сервера Jenkins. Я использую убунту. Это конфигурация nginx, которая у меня есть на данный момент:

server {
  listen 80;
  server_name jenkins.mydomain.com;

  location / {
    proxy_pass          http://localhost:8080;
    proxy_set_header    Host      $host;
    proxy_redirect      http://localhost:8080 https://jenkins.mydomain.com;
  }

  return 301 https://jenkins.mydomain.com$request_uri;
}

server {
  listen [::]:443 ssl ipv6only=on;
  listen 443 ssl;
  server_name jenkins.mydomain.com;

  ssl on;
  ssl_certificate /path/to/wildcard.mydomain.com.crt;
  ssl_certificate_key /path/to/wildcard.mydomain.com.key;

  location / {
    add_header Cache-Control private;
    expires epoch;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Host $host;
    proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    proxy_ssl_server_name on;

    include /etc/nginx/proxy_params;
    proxy_pass          http://localhost:8080;
    proxy_read_timeout  90s;
    proxy_redirect      http://localhost:8080 https://jenkins.mydomain.com;
  }
}

Как видите, я пытался добавить заголовки, связанные с прокси, в блок сервера порта 80, но это не сработало. Когда я перехожу на http://jenkins.mydomain.com или http://jenkins.mydomain.com:8080 , он не перенаправляется на https: // jenkins .mydomain.com . Как мне перенаправить что-либо, идущее на порт 80 и 8080 на 443?

0
задан 1 June 2020 в 10:47
1 ответ

Я использую этот конфиг, возможно, с любой страницы документации и работает годами без проблем. Вероятно, должно быть лучше, но для моего внутреннего использования этого достаточно.

upstream jenkins {
  server 127.0.0.1:8080 fail_timeout=0;
}

server { 
        listen 80; 
        listen [::]:80;
        server_name XXXX fail_timeout=0;
        return 301 https://XXXXX$request_uri; 
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl on; 
    ssl_certificate /etc/nginx/ssl/XXXX.cert.pem;
    ssl_certificate_key /etc/nginx/ssl/XXXX.key.pem;

    server_name XXXXX;

    location / { 

      proxy_set_header        Host $host:$server_port;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_pass http://jenkins;
      proxy_redirect http:// https://;
      add_header Pragma "no-cache";
    }   
}
1
ответ дан 1 June 2020 в 07:59

Теги

Похожие вопросы