2012-03-08 5 views
1

Я использовал свою локальную настройку без nginx для обслуживания моего приложения node.js, я использовал socket.io, и производительность была неплохой.socket.io медленный ответ после использования nginx

Теперь я использую Nginx проксировать мою просьбу, и я вижу, что socket.io имеет огромное время отклика, что означает моя страница становится оказана быстро, но данные, предоставляемые Socket.io является порядок медленнее, чем раньше.

Я использую NGINX 1.1.16 и вот конф,

gzip on; 

server { 
    listen  80; 
    server_name localhost; 

    #charset koi8-r; 

    access_log logs/host.access.log main; 

    location/{ 
     proxy_pass http://localhost:9999; 
     root html; 
     index index.html index.htm; 
    } 

Несмотря на то, что все работает, у меня есть 2 вопроса,

  1. socket.io реакция медленнее, чем раньше , С NGINX, ответ время составляет около 12-15 секунд и без, это почти 300 мс. попробовал это с помощью теста apache.

  2. Я вижу это сообщение в консоли, которая не была там перед использованием NGINX,

    [2012-03-08 09:50:58.889] [INFO] console - warn - 'websocket connection invalid' 
    

ответ

0

ли сообщение консоль от NGINX или SocketIO?

Прокси-сервер NGINX не говорит HTTP 1.1, что может быть, почему веб-сокет не работает.

Обновление: Найдено в блоге об этом: http://www.letseehere.com/reverse-proxy-web-sockets

Предлагаемое решение: http://blog.mixu.net/2011/08/13/nginx-websockets-ssl-and-socket-io-deployment/

+0

Сообщение от Node.js приложения (не из NGINX) .. Так что вы хотите сказать, что я не получаю данные через WebSocket, а через какой-либо другой транспортный механизм ? как я могу это проверить? – user644745

+0

Да, это имеет смысл. Да, вы не получаете данные через веб-сокет, но NGINX по-прежнему пытается перенаправить пакет, даже если он его не понимает. Он неправильно преобразует HTTP-запрос HTTP-HTTP в HTTP 1.0. В socket.io это сломано. –

+0

Обходной путь заключается в настройке NGINX вместо работы на прикладном уровне, он должен работать на транспортном уровне. Подробные инструкции приведены в ссылках моего ответа. –

3

Вы можете попробовать добавить:

proxy_buffering off; 

См the docs для информации, но у меня видел некоторые болтовни на разных форумах, что буферизация увеличивает время отклика в некоторых случаях.

+1

эта работа для меня, я использую webpack-hot-middleware – hisland

Смежные вопросы