@Gustov

Как правильно настроить простейший вариант балансировки через Nginx для контейнеров?

Создал следующий конфиг, который будет распределяться на 3 ноды:
1. 2 worpdress контейнера
2. 1 wordpress контейнер + БД
3. Nginx на который будет поступать трафик и который должен распределять нагрузки межу 3 контейнерами  WP на 2 нодах.

Все работает отлично все контейнеры успешно взаимодействуют между собой.

Вопрос только в файле конфигурации для Nginx который я копирую в /etc/nginx/nginx.conf
полный код docker stack + nginx.conf. - https://jsfiddle.net/85ru

отдельно nginx.conf

events { worker_connections 1024; }

http {
  upstream localhost {
    server wordpress:8008;
  }
  server {
    listen 80;
    server_name localhost;
    location / {
      proxy_pass http://localhost;
      proxy_set_header Host $host;
    }
  }
}

Копирование конфигурации происходит успешно, в контейнере, по пути /etc/nginx/nginx.conf содержится указанный код, но при переходе на http://someip:80 я получаю 502 Bad Gateway.
Если не модифицировать файл конфигурации, то стартовая страница Nginx открывается успешно.
Контейнеры WP успешно открываются на someip:8008, вне зависимости от настроек Nginx
Получается, что вопрос лишь в настройках сервера.

Подскажите, пожалуйста, где допустил ошибку?
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
karabanov
@karabanov Куратор тега Linux
Системный администратор
server_name localhost; это не будет работать так,как ты ожидаешь - здесь должно быть имя домена.

По поводу proxy_pass

Синтаксис:	proxy_pass URL;
Умолчание:	—
Контекст:	location, if в location, limit_except

Задаёт протокол и адрес проксируемого сервера, а также необязательный URI, на который должен отображаться location. В качестве протокола можно указать “http” или “https”. Адрес может быть указан в виде доменного имени или IP-адреса, и необязательного порта:

Поэтому:
location / {
proxy_pass http://upstream;
proxy_set_header Host $host;
}

Ну и Nginx в качестве балансировщика нагрузки
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Drno
Как в коменте указали - localhost не подходит
Используйте реальный адрес сервера

Так же - перезапускаете ли nginx после смены конфига?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы