Nginx 502 Bad Gateway, когда конвейер Jenkins запускает докер для приложения React - PullRequest
0 голосов
/ 12 октября 2019

У меня есть Ubuntu 18.04 сервер, работающий в Droplet (DigitalOcean), защищенный с помощью SSL и использующий обратный прокси Nginx . Также Jenkins работает на моем сервере (не в любом докере) и настроен для доступа в домене, который я создал для него: jenkins.testdomain.com (все эти шаги следуют за документами DO)

Таким образом, цель состоит в том, чтобы управлять развертыванием приложения Node.js-React на моем testdomain.com позже, сейчас я просто хочу создать папку dist , сгенерированную после'npm build' в / var / lib / jenkins / workspace /, просто так.

Теперь я могу получить доступ к своему сайту jenkins.testdomain.com, запустить конвейер для запускапроцесс после подталкивания к моему репо и запуску этапов;но это здесь, когда начинается сбой nginx, когда конвейер достигает фазы Deliver (давайте прочитаем фазу 'npm build'), иногда в фазе Build ('npm install').

Именно на этом этапе, читаявывод на консоль Jenkins, где я вижу, когда он застревает и в итоге выдает ошибку 502 Bad Gateway . Мне нужно будет запустить команду systemctl restart Jenkins в консоли сервера, чтобы снова получить доступ. После перезапуска конвейер возобновляет работу и, похоже, выполняет свою работу: /

В /var/log/nginx/error.log для nginx я могу прочитать:

* 1 ошибка подключения () (111: соединение отклонено) при подключении к восходящему каналу, клиент: 85.146.85.194, сервер: jenkins.testdomain.com, запрос: «GET / job / Basic% 20NodeJS-React%20app / 8 / console HTTP / 1.1 ", upstream:" https: //127.0.0.1:8080/job/Basic%20NodeJS-React%20app/8/console ", хост:" jenkins.testdomain.com ", реферер:"https: //jenkins.testdomain.com/job/Basic%20NodeJS-React%20app/8/"

* 1 Ошибка SSL_do_handshake () (SSL: ошибка: 1408F10B: процедуры SSL: ssl3_get_record: неправильная версияномер) во время установления SSL-соединения с восходящим потоком, клиент: 85.146.85.194, сервер: jenkins.testdomain.com, запрос: «GET /favicon.ico HTTP / 1.1», восходящий поток: «https: //127.0.0.1:8080/favicon. ico ", хост:" jenkins.testdomain.com ", реферер:" https: //jenkins.testdomain.com/job/Basic%20NodeJS-React%20app/8/console "...

ВJenkinsfile моего приложения node-js-реакции ( из репозитория jenkins ), агент выглядит следующим образом:

pipeline {
    agent {
        docker {
            image 'node:6-alpine' 
            args '-p 3000:80' 
        }
    }
    environment {
            CI = 'true'
    }
    stages {
            // Build, Test, and Deliver stages
    }
}

И моя конфигурация jenkins.testdomain.com (/ etc / nginx / sites-available / jenkins.testdomain.com ) примерно так (пройти тесты от nginx -t):

server {
    listen 80;

    root /var/www/jenkins.testdomain.com/html;
    server_name jenkins.testdomain.com www.jenkins.testdomain.com;

    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;

      # Fix the "It appears that your reverse proxy set up is broken" error.
      proxy_pass          http://localhost:8080;

      # High timeout for testing
      proxy_connect_timeout 1200s;
      proxy_send_timeout 1200s;
      proxy_read_timeout 1200s;

      proxy_redirect      http://localhost:8080 https://jenkins.testdomain.com;

      # Required for new HTTP-based CLI
      proxy_http_version 1.1;
      proxy_request_buffering off;

      # Required for HTTP-based CLI to work over SSL
      proxy_buffering off;
    }

    # Certbot auto-generated lines...
}

Любая помощь будет приветствоваться 3 дня, борясь с этим и играявокруг с различными директивами proxy_ от nginx и так ... Заранее спасибо!

1 Ответ

0 голосов
/ 27 октября 2019

ОК, просто добавьте обновление, которое спустя несколько дней после моего последнего сообщения, я понял, что основной и единственной причиной отказа сервера была нехватка ресурсов в капле.

Поэтому я использовал каплюс 1 ГБ ОЗУ, 25 ГБ HD и т. д. (самый базовый), поэтому я решил обновить его, чтобы использовать как минимум 2 ГБ ОЗУ, и это действительно заставило его работать так, как я ожидал. До сих пор все работало нормально, и эта проблема больше не повторялась.

Надеюсь, это поможет, если кто-то столкнется с той же проблемой.

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