Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Почему NGINX на сервере выдает 502 ошибку, в то время как без NGINX - все ок?  (Прочитано 1712 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sanu0074

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Приложение работает на 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 рубит конект? Что я тут не так наворотил?

Оффлайн Виктop

  • Участник
  • *
  • Сообщений: 244
    • Просмотр профиля
Не факт что дело в nginx, в логе написано же что upstream закрыл соединени досрочно во время чтения заголовка ответа от upstream. Это означает что время запроса истекло. Это может быть вызвано некорректным заголовком ответа от бекэнда, часто браузеры проглатывают подобные косяки, но не энджиникс. Сначала глянь логи бекэнда.

 

Страница сгенерирована за 0.017 секунд. Запросов: 20.