Введение
Concourse CI является современным и масштабируемой системой непрерывной интеграции для автоматизации конвейеров тестирования с помощью компонуемого декларативного синтаксиса.
В предыдущей инструкции мы рассмотрели установку и настройку Concourse CI на сервере Debian 10. Мы рассмотрели работу системы в командной строке и с помощью Web-интерфейса.
В этой инструкции будем рассматривать защиту Web-интерфейса Concourse CI, настроив обратный прокси с помощью Nginx.
Подготовка к работе
Для начала необходимо запустить сервер на Debian 10, с оперативной памятью не менее 1 GB. Выполните указания согласно инструкции, чтобы настроить простую чётную запись без прав суперпользователя.
Установите и настройте Concourse из официального сайта либо из GitHub.
Установите Nginx и настройте зашифрованное соединение.
Необходимо получить доменное имя для обращения по домену, а не по IP-адресу.
Конфигурирование обратного прокси
Для начала необходимо отредактировать файл серверного блока для настройки SSL и перенаправления трафика на сервер Concourse CI.
В директории /etc/nginx/sites-enabled находится файл default, который является стандартным файлом после установки nginx.
Внесём изменения в файле для настройки прокси-сервера, который будет перенаправлять трафик на сайт согласно названию домена.
Начнём с добавления строк в начале файла default из директории /etc/nginx/sites-enabled перед основной частью серверного блока. Укажем локальный адрес сервера и порт, которые прослушивает наш Concourse сервер:
upstream concourse {
server 127.0.0.1:8080;
}
Необходимо найти блок отвечающий за обслуживание SSL, по умолчанию является строка с listen 443. Убедитесь, что после server_name написано название вашего домена.
Внутри этого блока необходимо настроить блок “location /”, который передаёт запросы на сервер Concourse:
location / {
include proxy_params;
proxy_http_version 1.1;
proxy_read_timeout 90;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://concourse;
}
После внесения изменений, сохраняем файл и выполняем выход.
Проверим файл на корректность с помощью команды:
nginx -t
В результате получаем syntax ok и test is successful.
Чтобы изменения вступили в силу, необходимо перезагрузить nginx:
service nginx restart
Сервер Concourse сконфигурирован под наш домен.
Привязка домена к сетевому интерфейсу
После всех настроек конфигураций, необходимо привязать наш локальный адрес к нашему домену. Откроем файл web-environment из директории /etc/concourse и преобразуем строку CONCOURSE_EXTERNAL_URL в следующий вид и добавим локальный IP-адрес:
CONCOURSE_EXTERNAL_URL=https://serverspace.tm
CONCOURSE_BIND_IP=127.0.0.1
Выполним выход сохранив изменения.
Необходимо перезапустить службу concourse- web, чтобы изменения вступили в силу.
service concourse-web restart
Проверим какой адрес работает с портом 8080 с помощью команды:
netstat -tlnup | grep :8080
В результате получим следующую строку
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 1781/concourse
Web-интерфейс Concourse прослушивает только локальный IP-адрес.
Внесём изменения в брандмауэр удалив правило для порта 8080:
ufw delete allow 8080
Так как все запросы будут обрабатываться Nginx, который работает с портом 80.
Проверка web-интерфейса
Откроем браузер и введём название нашего домена и попадём на страницу приветствия Concourse.

Затем вводим логин и пароль, которую указывали при настройке Concourse.

После успешной авторизации попадаем в web-интерфейс Concourse CI.

Теперь наш сервер Concourse доступен с использованием домена.
Выводы
В данной инструкции мы рассмотрели:
- Изменение стандартного файла Nginx для перенаправления трафика;
- Привязку локального IP-адреса к домену для Concourse;
- Тестирование web-интерфейса Concourse с помощью домена.