Использование Gitlab docker за прокси-менеджером nginx docker

Вопрос или проблема

Я пытаюсь настроить Nginx Proxy Manager (NGPM) в качестве обратного прокси для Gitlab и других веб-сайтов/сервисов. Сам Gitlab работает внутри контейнера Docker, у которого есть свой собственный IP-адрес. NGPM также находится внутри контейнера Docker. Оба контейнера работают на сервере Unraid (и были установлены из “Приложений”, которые в данном случае являются предустановленными шаблонами Docker)

Я пробовал это:
https://www.itsfullofstars.de/2019/06/gitlab-behind-a-reverse-proxy/

Но это лишь привело к ошибке 502 Bad Gateway от Nginx.

Также пробовал некоторые другие вещи, но большинство ссылок, которые я нахожу, говорят о декомплексировании nginx от gitlab с nginx на той же машине, указывающим на некоторые материалы gitlab.

На данный момент я не понимаю, почему ничего не работает, и просто тыкаюсь в конфигурационные файлы, не совсем понимая, что делаю. Я даже не знаю, что предоставить вам, чтобы вы могли мне помочь, поэтому, пожалуйста, если вам нужно что-то для решения моей проблемы, я с радостью это предоставлю.

Логи редактирования:
Лог ошибок выглядит так:

2020/06/24 11:55:54 [error] 2834#2834: *1966 connect() failed (113: Host is unreachable) while connecting to upstream, client: 0.0.0.0, server: develop.company.com, request: "GET / HTTP/2.0", upstream: "http://192.168.10.170:80/", host: "develop.company.com", referrer: "http://192.168.10.135:7818/nginx/proxy" 

Доступный лог выглядит так:

[24/Jun/2020:11:49:56 +0200] - 502 502 - GET https develop.company.com "/" [Client 0.0.0.0] [Length 166] [Gzip -] [Sent-to 192.168.10.170] "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0" "http://192.168.10.135:7818/nginx/proxy"   
[24/Jun/2020:11:49:56 +0200] - - 499 - GET https develop.company.com "/favicon.ico" [Client 0.0.0.0] [Length 0] [Gzip -] [Sent-to 192.168.10.170] "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0" "-"

Обратите внимание, что я изменил IP-адрес клиента для загрузки сюда. Поскольку я тестирую это из сети, где находятся прокси и gitlab, это наш внешний IP.

Редактировать конфигурацию:
Gitlab:
Я пробовал только с этим:
external_url="https://develop.company.com
Но также и это:
nginx['listen_port'] = 80
nginx['listen_https'] = false

Я также пробовал http-версию для external_url.

NGPM:
введите описание изображения здесь
введите описание изображения здесь
Я также пробовал http с 443, https с 80, но это не имело значения (и тоже не имело бы большого смысла).

Настройка сетевого соединения для контейнера Docker в Unraid, вместо того чтобы давать ему свой собственный IP-адрес, сработала, обратный прокси, похоже, теперь работает нормально.

Вот вся “Настройка”, которая мне была необходима.
В файле gitlab.rb вам нужно раскомментировать/установить эти значения:

external_url="https://develop.company.com
nginx['listen_port'] = 80
nginx['listen_https'] = false

Обратите внимание, что https:// здесь необходимо.

Запись в NGPM:
введите описание изображения здесь

Конфигурация контейнера Unraid:
введите описание изображения здесь

Так что да. Не знаю, почему это не сработало, когда Gitlab имел свой собственный IP-адрес, но это работает как ожидалось сейчас.

Ответ или решение

Подключение GitLab к Nginx Proxy Manager через Docker на Unraid: Практическое руководство

Ваша задача заключается в настройке GitLab, работающего в контейнере Docker, с Nginx Proxy Manager (NGPM), который также размещен в контейнере Docker на сервере Unraid. Данная проблема может быть сложной, особенно из-за особенностей сетевой конфигурации Docker. В этом руководстве мы адресуем основные проблемы и делаем шаги, чтобы установить правильное взаимодействие между вашими сервисами.

Описание проблемы

Как вы упомянули, вы столкнулись с ошибкой 502 Bad Gateway. Это обычно указывает на проблемы с подключением Nginx к вашему контейнеру GitLab, которые могут возникать по нескольким причинам:

  1. Неправильная настройка external_url в конфигурации GitLab.
  2. Ошибки в конфигурации Nginx Proxy Manager, связанные с маршрутизацией и портами.
  3. Необходимость в соответствующей настройке сетевого режима контейнеров.

Шаги для устранения неполадок и настройки

  1. Проверка сетевого подключения:

    • Убедитесь, что оба контейнера (GitLab и NGPM) находятся в одной сети Docker, или используйте сетевой режим bridge, чтобы обеспечить правильное взаимодействие.
  2. Настройка GitLab:
    В файле конфигурации gitlab.rb выполните следующие настройки:

    external_url "https://develop.company.com"
    nginx['listen_port'] = 80
    nginx['listen_https'] = false

    Обратите внимание на то, что необходимо использовать https в external_url, если вы планируете использовать SSL/TLS через Nginx Proxy Manager.

  3. Настройка Nginx Proxy Manager:
    Чтобы правильно перенаправить запросы на GitLab, выполните следующие действия:

    • В NGPM создайте новый прокси-хост с данными:
      • Domain Names: develop.company.com
      • Scheme: http
      • Forward Hostname / IP: IP адрес вашего контейнера GitLab (например, 192.168.10.170)
      • Forward Port: 80
    • Убедитесь, что вы выбрали опцию "Block Common Exploits".
  4. Решение проблемы с сетевыми подключениями:
    Ваша проблема может заключаться в том, что GitLab не может быть достигнут из контейнера NGPM, если контейнер GitLab имеет собственный IP адрес. Решением зависит от упрощения сетевой архитектуры:

    • Попробуйте перевести контейнеры в режим "host" или использовать один и тот же сетевой промежуток, чтобы избежать проблем с маршрутизацией.
  5. Тестирование и отладка:

    • После изменения конфигураций не забудьте перезапустить контейнеры для применения новых настроек.
    • Проверьте логи Nginx Proxy Manager и GitLab для выявления возможных новых ошибок. Эти логи могут дать подсказки относительно того, где именно происходит сбой.

Заключение

Сеть контейнеров и их взаимодействие могут быть сложной задачей при работе с Docker и Nginx Proxy Manager. Однако, следуя вышеописанным шагам, вы сможете успешно настроить GitLab за прокси-сервером Nginx. Если вы столкнётесь с новыми проблемами или ошибками, стоит обратиться к документации GitLab и Nginx, а также к сообществу для получения дополнительных решений.

Этот процесс может потребовать времени и терпения, особенно если вы сталкиваетесь с новыми технологиями. Тем не менее, с правильной информацией и подходом вы сможете их преодолеть и успешно интегрировать ваши сервисы.

Оцените материал
Добавить комментарий

Капча загружается...