#google-chrome #nginx #load-balancing #proxypass
#google-chrome #nginx #балансировка нагрузки #proxypass
Вопрос:
У меня простая настройка 3 серверов (в контейнерах) — 2 сервера «приложений» (службы whoami — поэтому по ответу я могу подтвердить сервер) и сервер nginx.
Я запустил nginx с простой конфигурацией балансировки нагрузки:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
upstream myapp1 {
server w1:8000 weight=1;
server w2:8000 weight=1;
}
server {
listen 80;
location / {
proxy_pass http://myapp1/;
}
}
}
Проблема в том, что это не работает в Chrome — он всегда загружает только первый сервер. Я пытался отключить кэш в консоли разработчика перезагрузить с помощью CTRL F5, но ничего не помогло.
Если я пытаюсь curl
подключиться к серверу nginx — я получаю ответы циклическим способом (как и ожидалось).
Вот моя настройка контейнеров:
docker network create testnw
docker run -dit --name w1 --network testnw jwilder/whoami # app1
docker run -dit --name w2 --network testnw jwilder/whoami # app2
docker run -dit --name ng --network testnw -p 8989:80 -v ${PWD}/my.conf:/etc/nginx/nginx.conf nginx # LB server
curl localhost:8989 # will get response from w1
curl localhost:8989 # will get response from w2
curl localhost:8989 # will get response from w1
...
Ответ №1:
Правка 3: обнаружена интересная проблема. В Chrome каждый раз, когда я захожу на свой веб-сайт, он выполняет два вызова, независимо от того, что они вызывают на / моего веб-сайта и / favicon.ico моего веб-сайта. У меня нет /favicon.ico. Что, я думаю, происходит
- когда Nginx получает запросы для / из моего веб-сайта, он загружает первый сервер выше по потоку.
- когда chrome загружает / с моего веб-сайта, он также вызывает /favicon .ico моего веб-сайта, в результате которого выполняется новый вызов Nginx, чтобы он загружал файлы .ico со следующего вышестоящего сервера.
- это происходит для того, чтобы серверы 1,2,3 загружались в порядке 1 (файл ico из 2), 3 (файл ico из 1), 2 (файл ico из 3). и цикл повторяется.
однажды я остановил загрузку / favicon.при ico в Nginx мои три сервера восходящих потоков 1,2,3 загружаются в порядке циклического перебора 1,2,3.
Я поместил это на сервер с восходящим потоком, чтобы отключить значок загрузки.ico от Nginx.
location = /favicon.ico {
log_not_found off;
}
Надеюсь, что любой, у кого возникла эта проблема, найдет это полезным.
Правка 2: Проблема устранена, балансировка нагрузки отлично работает со статическими файлами и статическими серверами внутри файла Nginx conf. но мои приложения загружаются узлом, поэтому пришлось запустить Nginx после запуска всех серверов узла. Проблема снова появляется при перезапуске сервера приложений во время работы Nginx. Теперь проблема не будет обновляться в ближайшее время
Редактировать 1: У меня это больше не работает, вчера это работало, сегодня продолжил работать с той же конфигурацией, проблема появилась снова.
Была такая же проблема с моей настройкой. Что сработало у меня после долгой настройки прокси, настройки VirtualBox и редактирования сети.
Добавьте дополнительный серверный блок в HTTP-блок.
server{
}
и перезагрузите службу Nginx.
У меня это сработало, после перезагрузки, как только chrome и Firefox загружают серверы в заданном порядке, я удалил серверный блок, и он все еще работает.
Не знаю, почему проблема возникла в первую очередь. Надеюсь, это поможет решить вашу проблему.