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

преждевременно закрытое соединение в восходящем направлении при чтении заголовка ответа из восходящего потока

У меня возникают проблемы с настройкой SSL для моего сервера Jenkins CI. Я использую Jenkins за nginx для обратного прокси. Я получаю это upstream prematurely closed connection while reading response header from upstream ошибки в моем jenkins.error.log файл.

2014/09/30 13:01:49 [error] 4875#0: *1 upstream prematurely closed connection while reading response header from upstream, client: <MY IP ADDR>, server: jenkins.<SERVER URL>.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8080/favicon.ico", host: "jenkins.<SERVER URL>.com"
2014/09/30 13:01:50 [error] 4875#0: *1 upstream prematurely closed connection while reading response header from upstream, client: <MY IP ADDR>, server: jenkins.<SERVER URL>.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "jenkins.<SERVER URL>.com"

Дженкинс готов к работе. Я могу подключиться через https://<SERVER IP ADDR>:8080 (хотя Chrome жалуется на сертификат). nginx дает мне 502 Bad Gateway сообщение для официального URL-адреса.

конфигурация, доступная для сайтов:

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

server {
  listen 80;
  return 301 https://$host$request_uri;
}

server {
  listen 443;
  #listen [::]:443 default ipv6only=on;
  server_name jenkins.<SERVER URL>.com <SERVER IP ADDR>;

  ssl on;
  ssl_certificate /etc/nginx/ssl/jenkins.<SERVER URL>.com.chained.crt;
  ssl_certificate_key /etc/nginx/ssl/<SERVER URL>.com.key;

  access_log /etc/nginx/logs/jenkins.access.log;
  error_log /etc/nginx/logs/jenkins.error.log;

  location / {
    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_set_header        X-Forwarded-Proto $scheme;
    proxy_redirect          http:// https://;
    proxy_pass              http://jenkins;
  }
}

Проблема была в самом Дженкинсе. Изначально мы отключили порт http для Jenkins и разрешили только https. Как только мы снова разрешили http, мы разрешили запросы только от 127.0.0.1, и это решило наши проблемы.

tl; dr: включить порт http, разрешить запросы только через 127.0.0.1