/ / nginx 1.2.0 - socket.io - HTTP / 1.1 - връзки с прокси уеб сайтове - прокси, nginx, websocket, socket.io, обратен прокси

nginx 1.2.0 - socket.io - HTTP / 1.1 - Прокси връзки в мрежата - прокси, nginx, websocket, socket.io, обратно прокси

Бих искал да замени моя възел-http-прокси модулс модул nginx proxy_pass. Възможно ли е с новата версия nginx, както аз прочетох, че поддържа HTTP / 1.1 от кутията. Видях някои нишки да се борят с този проблем, че websockets не се поддържат от nginx.

В моя случай im изпълнява няколко проекта на възелфона и искате да насочите връзките ми от порт 80 до 8000-8100, в зависимост от домейна. Има ли местен начин да се направи websocket прокси / обратен прокси, без да използвате tcp_module addon?

Опитах се да настроите нагоре по веригата в nginx.conf с proxy_passing към него, но ако се опитам да се свържа с порт 80 през websocket, аз получавам 502 Gateway грешка.

Всеки, който е изправен пред същия проблем? Някой има ли работен пример за nginx + spcket.io, проксиращ през порт 80?

Отговори:

35 за отговор № 1

Не, това все още не е възможно; nginx 1.2 включва неща от раздела за развитие 1.1.x, който наистина включва обратна прокси HTTP / 1.1. Websocket връзките се установяват чрез HTTP / 1.1 "Upgrade" заглавие, но фактът, че nginx сега поддържа този вид заглавия, не означава, че поддържа websockets (websockets са друг протокол, а не HTTP). (Опитах това сам, използвайки клон 1.1.x (който установих, че е достатъчно стабилен за моята цел) и не работи без tcp_module)

Вероятно Websockets ще се поддържат в 1.3.x ( http://trac.nginx.org/nginx/roadmap ).

Вашите алтернативи са:

  • продължете да използвате node-http-proxy
  • използвайте nginx без tcp модул; socket.io няма да използва websockets, но нещо друго (напр. дълъг избор)
  • nginx с tcp модул: в този случай мисля, че имате нужда от допълнителен порт за този модул (никога не съм опитвал това сам)
  • поставете нещо друго като преден прокси сървър: Използвам HAProxy (който поддържа websockets) пред nginx и node. Сега Nginx просто действа като статичен файлов сървър, а не като прокси сървър. Лакът е друга опция, ако искате допълнително кеширане.

0 за отговор № 2

Във връзка с NginX с TCP модул има няколко проблема, с които се сблъсках. Но най-сложната се опитва да стартира вашия websockets с nginx на порт 80 на инстанция EC2.

Аз описах цялата конфигурация тук