Ответ 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 не будет использовать веб-узлы, но что-то еще (например, длительный опрос)
- nginx с модулем tcp: в этом случае я думаю, вам нужен дополнительный порт для этого модуля (никогда не пробовал это сам)
- поставьте что-то еще впереди как обратный прокси-сервер: я использую HAProxy (который поддерживает веб-узлы) перед nginx и node. Nginx теперь просто действует как статический файловый сервер, а не прокси. Лак - еще один вариант, если вы хотите дополнительное кэширование.