Обратный прокси-сервер Nginx выполняет неожиданную балансировку нагрузки

// Редактировать после публикации вопроса
Моя проблема заключалась в том, что все докеры находились в одной сети, потому что я также хотел докеризировать прокси-сервер, а ему нужно было получить доступ ко всем докерам для прокси-запроса.
Это так. не имел ничего общего с PROXY
Так что я точно не знаю, почему, но тот факт, что они были в одной сети докеров, даже при использовании открытых портов, балансировал нагрузку во всех моих приложениях

Я пытаюсь настроить обратный прокси для локальной разработки для своей команды. У нас есть 3 приложения Laravel, которые хорошо работают в докере, сопоставленном с другим портом на хосте.

результаты docker ps:

a1741218e399 nginx "/docker-entrypoint.…"   5 seconds ago        Up 3 seconds        0.0.0.0:8087->80/tcp   qbo
175b5133fd82 nginx "/docker-entrypoint.…"   8 seconds ago        Up 7 seconds        0.0.0.0:8086->80/tcp   apiv2
56c485f51700 nginx "/docker-entrypoint.…"   41 seconds ago       Up 39 seconds       0.0.0.0:8085->80/tcp   apiv1

Все хосты указаны в /etc/hosts

127.0.0.1 api.lan
127.0.0.1 api2.lan
127.0.0.1 qbo.lan

Nginx установлен на моей машине со следующей конфигурацией

# Api v1
upstream api.lan {

  server localhost:8085;
}

server {

  server_name api.lan;
  listen 80;

  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;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://api.lan;
    proxy_redirect off;
  }
}


# Qbo
upstream qbo.lan {

  server localhost:8087;
}

server {

  server_name qbo.lan;
  listen 80;

  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;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://qbo.lan;
    proxy_redirect off;
  }
}

# Api v2
upstream api2.lan {

  server localhost:8086;
}

server {

  server_name api2.lan;
  listen 80;

  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;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://api2.lan;
    proxy_redirect off;
  }
}

Вот моя проблема: при попадании в любой из трех доменов происходит балансировка нагрузки между этими тремя приложениями.

Самое странное, что помимо этих приложений у меня также были хорошо запущены фронтальные приложения v1 и v2 на другом порту с аналогичной конфигурацией для прокси без каких-либо проблем с балансировкой нагрузки. Если у кого-то есть предложение, чтобы помочь мне решить эту проблему


person AlexisV    schedule 15.07.2020    source источник
comment
Можете ли вы показать, как вы делаете запросы? Можете ли вы показать журналы доступа и ошибок nginx? Какая версия nginx?   -  person Andy Shinn    schedule 15.07.2020
comment
Я делаю запрос через свой веб-браузер / я вернул строку с именем службы (Apiv1/Apiv2/Qbo). Я использую nginx 1.18.0. Для журнала мне нужно некоторое время, чтобы восстановить службу, так как я сейчас работаю :)   -  person AlexisV    schedule 16.07.2020
comment
@AndyShinn Я нашел свою проблему, докер был в той же сети. Таким образом, даже если они были подключены к разным портам, они балансировали нагрузку друг на друга. Это не имеет ничего общего с прокси. Извините за потраченное время :)   -  person AlexisV    schedule 16.07.2020


Ответы (1)


Проблема заключалась в том, что мои докеры находились в одной сети. Даже если я открывал разные порты, это балансировало нагрузку между ними. Это не имело никакого отношения к Прокси.

person AlexisV    schedule 16.07.2020