Поддержка Websocket встроена в Nginx начиная с 1.3.13, так что она у меня должна быть.
Может ли кто-нибудь предоставить мне простейший пример конфигурации, которая позволит моему прокси-серверу nginx (на Centos 6) принимать HTTP-соединение от моего клиента, тогда прокси установит соединение через веб-сокет с бэкэндом на другом сервере от имени клиента. и прокси-связь между клиентом и сервером websocket?
Я пытался несколько дней и получил только 400
ошибки. Я был бы очень признателен.
Я пытался:
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;
}
Дело в том, что location
не совпадает строки запроса (то, что стоит за вопросительным знаком).
Вам нужно будет использовать что-то вроде if
:
location /wsDemo {
if($arg_ID = 12) {
proxy_pass http://myserver.com:80/wsDemo?ID=12;
break;
}
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}