Почему NGINX на сервере с Linux выдает 502 ошибку, в то время как без NGINX все работ

Sanu0074
На сайте с 31.08.2012
Offline
110
1207

Приложение работает на express.js + socket.io + redis + mysql.

Выложил сайт на тестирование на qa-стенд (14.x ubuntu server).

На убунте есть nginx 1.10.x.

Получаю ошибку 502 Bad Gateway. В err-логе nginx'a пишет:

2017/02/14 00:50:31 [error] 11325#11325: *17 upstream prematurely closed connection while reading response header from upstream, client: 192.168.1.1, server: admin.mydomain.com, request: "POST /section/save HTTP/1.1", upstream: "http://127.0.0.1:7103/section/save", host: "admin.mydomain.com:7001", referrer: "http://admin.mydomain.com:7001/section/advertising/42"

2017/02/14 00:50:31 [error] 11325#11325: *9 upstream prematurely closed connection while reading response header from upstream, client: 192.168.1.1, server: admin.mydomain.com, request: "GET /socket.io/?EIO=3&transport=polling&t=LevT9z1&sid=9Jg8IjXWdDWb_wZvAAAB HTTP/1.1", upstream: "http://127.0.0.1:7103/socket.io/?EIO=3&transport=polling&t=LevT9z1&sid=9Jg8IjXWdDWb_wZvAAAB", host: "admin.mydomain.com:7001", referrer: "http://admin.mydomain.com:7001/section/advertising/42"

Интересно то, что этот же url (/section/save) но другие данные (post-запрос так же, но отсылаемый json может быть другого размера, как больше так и меньше) и все работает нормально.

Для интереса, поставил nginx на девелоперскую машину с виндой и запустил в кластере чтоб было все как на убунте - и... все работает!

nginx.conf выглядит так:

user www-data;

worker_processes 8;
pid /run/nginx.pid;

events {
worker_connections 1024;
}

http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 1024m;
include /etc/nginx/mime.types;
default_type application/octet-stream;

server_tokens off;

access_log off;
error_log /var/log/nginx/error.log;

gzip on;
gzip_disable "msie6";
gzip_comp_level 5;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

Конфиг для сайта выглядит так:

upstream nodes {

ip_hash;
server 127.0.0.1:7101;
server 127.0.0.1:7102;
server 127.0.0.1:7103;
server 127.0.0.1:7104;
server 127.0.0.1:7105;
server 127.0.0.1:7106;
server 127.0.0.1:7107;
server 127.0.0.1:7108;
}

server {
listen *:7001;
server_name admin.mydomain.com;
access_log off;
error_log /var/log/nginx/error.log;
location / {
auth_basic "Admin Zone";
auth_basic_user_file /mnt/sdb1/mydomain/.htpasswd;
proxy_pass http://nodes;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}

location ~* \.(jpg|jpeg|gif|png|webp|ico|css|bmp|swf|js|html|txt|ejs)$ {
root /mnt/sdb1/mydomain/admin/www;
expires max;
}
}

Что я делал:

- увеличивал:

proxy_connect_timeout

proxy_send_timeout

proxy_read_timeout

- добавлял:

proxy_buffers 8 32k;

proxy_buffer_size 64k;

proxy_redirect off;

= результат нулевой!

Приложение работает на всех портах перечесленных в upstream, не падает ничего.

Объясните мне, почему nginx рубит конект? Что я тут не так наворотил?

S
На сайте с 17.08.2008
Offline
114
#1
поставил nginx на девелоперскую машину с виндой

Может потому что nginx под винду используется последней версии? А в ином случае нет?

SocFishing
На сайте с 26.09.2013
Offline
118
#2

проблема может быть в чем угодно, начиная от версии php и тд. нужно детальнее изучать другие логи.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
LEOnidUKG
На сайте с 25.11.2006
Online
1774
#3

502 в основном это проблема дальше nginx.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Sanu0074
На сайте с 31.08.2012
Offline
110
#4

smbbws, нет

SocFishing, причем php? нет тут php, читайте внимательней тему)

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

Joker-jar
На сайте с 26.08.2010
Offline
171
#5

Вы случаем не пытаетесь проксировать вебсокеты?

D
На сайте с 31.01.2017
Offline
15
#6

Попробуйте добавить:

proxy_redirect off;

А это если WebSocket используются:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

http://nginx.org/ru/docs/http/websocket.html

Sanu0074
На сайте с 31.08.2012
Offline
110
#7

demiux, не-не, ошибка на бэке

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий