502 Плохой шлюз для Jenkins с nginx

У меня есть VPS с nginx. gitlab, phpmyadmin уже работает с certbots https. Теперь я хочу добавить Дженкинса. Я изменил его порт на 8090, чтобы он не совпадал с портом gitlabs 8080. Я проверил статус каждого из них, и все службы работают.

    upstream jenkins {
  keepalive 32;
  server localhost:8090 fail_timeout=0;
}

server {
    server_name build.example.de;

    listen 443 ssl; # managed by Certbot

    access_log  /var/log/nginx/jenkins_access.log;
    error_log   /var/log/nginx/jenkins_error.log;

    ssl_certificate /etc/letsencrypt/live/build.example.de/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/build.example.de/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    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_redirect http:// https://;
     proxy_pass http://jenkins;

     # Required for new HTTP-based CLI
     proxy_http_version 1.1;
     proxy_request_buffering off;
     proxy_buffering off; # Required for HTTP-based CLI to work over SSL

     # workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651
     add_header 'X-SSH-Endpoint' 'build.example.de:50022' always;
    }

}

server {
    if ($host = build.example.de) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;

    server_name build.example.de;
    return 404; # managed by Certbot
}

Я всегда получаю сообщение об ошибке:

[error] 8441#8441: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 88.65.0.115, server: build.example.de, request: "GET / HTTP/1.1", upstream: "https://127.0.0.1:8090/", host: "build.example.de"


Jul 26 16:32:10 v22018076557869542 systemd[1]: Starting LSB: Start Jenkins at boot time...
Jul 26 16:32:10 v22018076557869542 jenkins[24446]: Error: Unable to access jarfile jenkins-cli.jar
Jul 26 16:32:10 v22018076557869542 jenkins[24446]: Correct java version found
Jul 26 16:32:10 v22018076557869542 jenkins[24446]:  * Starting Jenkins Automation Server jenkins
Jul 26 16:32:10 v22018076557869542 su[24520]: Successful su for jenkins by root
Jul 26 16:32:10 v22018076557869542 su[24520]: + ??? root:jenkins
Jul 26 16:32:10 v22018076557869542 su[24520]: pam_unix(su:session): session opened for user jenkins by (u
Jul 26 16:32:10 v22018076557869542 su[24520]: pam_unix(su:session): session closed for user jenkins
Jul 26 16:32:11 v22018076557869542 jenkins[24446]:    ...done.
Jul 26 16:32:11 v22018076557869542 systemd[1]: Started LSB: Start Jenkins at boot time.

Что я делаю не так??


person b0ss    schedule 26.07.2019    source источник


Ответы (1)


Похоже, ваш запрос перенаправлен на восходящий: "https://127.0.0.1:8090/", хотя он должен быть простым http, попробуйте удалить proxy_redirect http:// https://;

person Dumitru Gurjui    schedule 26.07.2019
comment
Вы можете сделать запрос к jenkins локально, чтобы убедиться, что он работает, например curl http://127.0.0.1:8090 - person Dumitru Gurjui; 26.07.2019
comment
curl: (7) Не удалось подключиться к порту 127.0.0.1 8090: соединение отклонено, это вывод - person b0ss; 26.07.2019
comment
это означает, что ваш Jenkins не прослушивает этот порт, как вы изменили порт? - person Dumitru Gurjui; 26.07.2019
comment
о, ничего себе, хорошо .. ну, я изменил переменную $HTTP_PORT в /etc/default/jenkins и также перезапустил jenkins .. - person b0ss; 26.07.2019
comment
это последняя строка вышеупомянутого файла jenkins: java -jar jenkins-cli.jarJENKINS_ARGS=--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --httpListenAddress=$HTTP_PORT - person b0ss; 26.07.2019
comment
статус услуги: Active: активен (закрыт) - person b0ss; 26.07.2019
comment
Попробуйте отредактировать файл jenkins.xml, расположенный в домашнем каталоге jenkins, и замените –httpPort=8080 на нужный, затем перезапустите службу. - person Dumitru Gurjui; 26.07.2019
comment
Я не могу найти jenkins.xml. У меня Ubuntu в качестве ОС на моем vps - person b0ss; 26.07.2019
comment
вы изменили переменную в последней строке или ее значение похоже на HTTP_PORT=8090, это должно быть расположено парой строк выше - person Dumitru Gurjui; 26.07.2019
comment
Я добавил это к аргументам: --httpListenAddress=$HTTP_PORT и изменил значение HTTP_PORT - person b0ss; 26.07.2019
comment
можешь прикрепить этот файл? - person Dumitru Gurjui; 26.07.2019
comment
Я получаю еще одну ошибку при просмотре статуса Дженкинса. Пожалуйста, проверьте вопрос. я отредактировал это - person b0ss; 26.07.2019
comment
вау, у пользователя jenkins есть разрешение на доступ к jenkins-cli.jar? - person Dumitru Gurjui; 26.07.2019
comment
Я даже не могу найти этот файл :/ - person b0ss; 26.07.2019
comment
Я бы восстановил исходный файл /etc/default/jenkins, а затем на мгновение отключил службу gitlab, чтобы убедиться, что jenkins работает без проблем, скорее всего, это опечатка или неправильная конфигурация в этом файле. - person Dumitru Gurjui; 26.07.2019
comment
что я мог бы сделать, так это выполнить файл jenkins.war и не все. Создал учетную запись администратора и установил jenkins. но мне нужно было выйти, и я хотел запустить jenkins по службе, но он снова говорит, что не может получить доступ к файлу jenkins.jar - person b0ss; 26.07.2019
comment
моя единственная проблема в том, что я не могу найти файл jenkins-cli.jar на своем сервере. Где я могу найти его? - person b0ss; 26.07.2019