Бих искал да замени моя възел-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.
Аз описах цялата конфигурация тук