Дженкинс за nginx обратный прокси не перенаправляет во всех ситуациях - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть jenkins и nginx, работающие через docker-compose, и они оба находятся в одной сети docker. Jenkins не предоставляет никаких портов для хост-машины и имеет конфигурацию по умолчанию для работы на порте 8080 и nginx карты 8003:443.

У нас есть сервер, расположенный в частной сети и поддомене, и у меня есть следующий nginx файл конфигурации

upstream jenkins {
  server        jenkins:8080;
}

server {
  listen   443 ssl;
  server_name   abc.example.com;
  ssl_certificate       /etc/ssl/private/certificate.crt;
  ssl_certificate_key   /etc/ssl/private/key.pem;

  root            /var/run/jenkins/war/;

  ignore_invalid_headers off; #pass through headers from Jenkins which are considered invalid by Nginx server.

  location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
    #rewrite all static files into requests to the root
    #E.g /static/12345678/css/something.css will become /css/something.css
    rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
  }

  location /userContent {
    #have nginx handle all the static requests to the userContent folder files
    #note : This is the $JENKINS_HOME dir
        root /var/lib/jenkins/;
    if (!-f $request_filename){
      #this file does not exist, might be a directory or a /**view** url
      rewrite (.*) /$1 last;
          break;
    }
        sendfile on;
  }


  location / {
    proxy_pass  http://jenkins/;
    proxy_buffering off;
    proxy_set_header X-Real-IP $remote_addr;
      sendfile off;
      proxy_redirect     default;
      proxy_http_version 1.1;
      proxy_set_header   Host $host;
      proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
      proxy_set_header   X-Forwarded-Proto $scheme;
      proxy_set_header   X-Forwarded-Port 443;
      proxy_max_temp_file_size 0;
      #this is the maximum upload size
      client_max_body_size       10m;
      client_body_buffer_size    128k;
      proxy_connect_timeout      90;
      proxy_send_timeout         90;
      proxy_read_timeout         90;
      proxy_set_header Connection ""; # Clear for keepalive
  }

}

Большинство этих настроек взяты из руководства по устранению неисправностей, так как моя первоначальная попытка не перечислила их все, и я получил и все еще получаю уведомление It appears that your reverse proxy set up is broken. В настоящее время Вроде бы только частично работает. Некоторые URL работают нормально, например, если я нажимаю на людей, я получаю https://abc.example.com:8003/asynchPeople/, но другие, такие как логин и синий океан, похоже, отбрасывают порт. Добавление этого обратно вручную заставляет работать URL. Так что я не уверен, что именно не так. Я должен также добавить, что я установил URL Дженкинса на abc.example.com:8003

1 Ответ

0 голосов
/ 16 апреля 2020

После того, как изрядное количество прочтения о следующем, помогло моей ситуации.

proxy_set_header   X-Forwarded-Host $http_host;

Это поддержало номер порта и функциональность, как и ожидалось, с Jenkins.

Относительно обратного прокси сломан, я проверял через curl задачу администрирования. Это не помогло и дало мне ошибку и перенаправило меня сюда: https://curl.haxx.se/docs/sslcerts.html. Несмотря на то, что все браузеры показывают значок безопасности и не показывают проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...