502 ошибка плохого шлюза, отображаемая при переключении между страницами сайта и несколько раз на домашней странице, но не для первого запроса на домашней странице, а только при перенаправлении на другую страницу. и это происходит для некоторых файлов JavaScript
балансировка нагрузки настроена на двух восходящих потоках php1 и php2 оба являются серверами apache.
Когда я проверил журнал ошибок, я полюбил:
no live upstreams while connecting to upstream
[error] 27212#0: *314 no live upstreams while connecting to upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"
и это конфигурация сервера балансировки нагрузки
upstream example.com {
# ip_hash;
server php01 max_fails=3 fail_timeout=15s;
server php02 max_fails=3 fail_timeout=15s;
}
server {
listen IP:80;
server_name example.com;
access_log /var/log/nginx/example.com.access;
error_log /var/log/nginx/example.com.error error;
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_pass http://$server_name/$uri;
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pragma $http_authorization;
}
}
Я искал часы и ничего полезного не нашел мои потоки и никаких проблем с ними.
Ответы:
Это не проблема с Nginx, это проблема с тем, что ваши PHP-серверы не отвечают вовремя. Вы можете добавить логирование в Nginx, чтобы подтвердить это .
Как вторая точка отсчета, вы можете
top
на сервере и вручную проверить, не PHP ли хлопает процессором в течение некоторого времени, еще один индикатор медленных ответов.Если очень медленные ответы от PHP в порядке, вы можете попросить Nginx подождать дольше, прежде чем сдаться:
Изучив журналы с информацией о времени, указанной выше, вы сможете выяснить, какие запросы медленны для обработки PHP.
Чтобы сузить проблему, отправьте эти запросы непосредственно в бэкэнд PHP.
В зависимости от того, что происходит, вы также можете включить кэширование некоторых запросов в Nginx, избегая некоторых медленных запросов.
источник
Не знаю, если это то же самое, но для меня сработало добавление max_fails = 0 в конец имени сервера
upstream sm_url {сервер LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }
источник
Переименуйте апстрим в up_example.com и измените
быть
источник
$server_name
. Если бы это была проблема, я думаю, что у него были бы проблемы / постоянно / не всегда, как сообщалось.