Мне сложно с этим. У нас есть сервер websocket, который прослушивает порт 80 по адресу myserver.com/wsDemo?ID=12. Нам нужно протестировать клиентскую программу, подключив ее к этому серверу через прокси. Я пробую nginx 1.2.7 в качестве прокси на порту 8080, работающем на прокси-сервере. Мы хотим, чтобы клиент подключился к прокси-серверу с помощью метода http-подключения, а затем прокси-сервер создал туннель к серверу приложений myserver.com/wsDemo?ID=12 websocket. Вот моя конфигурация nginx:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server{
listen 8080;
listen 80;
location /wsDemo?ID=12 {
proxy_pass http://myserver.com:80/wsDemo?ID=12;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;
}
Я был бы рад использовать для этого любой прокси, если у кого-то есть другой инструмент, который они порекомендовали бы (пожалуйста, добавьте пример конфигурации, возможно)
nginx в настоящее время изначально не поддерживает протокол WebSocket. Первая поддерживающая его версия - 1.3.13 с 20 февраля (источник: nginx.org).
Пока он не достигнет статуса готовности к производству, вы можете попробовать nginx_tcp_proxy_module
из Яовейбина для прокси-соединения WebSocket как простого TCP.