I am running nginx-1.5 server and sending chrome browser simple
websocket
request. My nginx server is confgiured with hello module which is
supposed
to send “Hello world” in response.
As per RFC for websocket, a sever is supposed to send "switching
protocol
message "as ACK for connection upgrade request message.
In my wireshark capture, I do see connection upgrade request message but
in
response, I see HTTP 1.1 200 0K message with “Hello World”
text on data portion of HTTP payload.
I am confused in terms of response, thinking my nginx server should have
first sent connection upgrade response acknowledgement before responding
with text data. Can anyone please suggest the right behaviour of nginx
server when it gets a Connection upgrade request message.
My NGinx config is :
server {
listen 80;
#access_log /var/log/nginx/access.log;
#error_log /var/log/nginx/error.log;
server_name localhost;
# prevents 502 bad gateway error
large_client_header_buffers 8 64k;
location /hello {
hello;
#root html;
#index index.html index.htm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
# prevents 502 bad gateway error
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_intercept_errors on;
proxy_buffering on;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 256k;
proxy_read_timeout 300;
#proxy_pass http://backend;
proxy_redirect off;
# enables WS support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Also when I enable #proxy_pass http://backend , server stop responding
and
gives HTTP1.1/400 bAD REQUEST saying
cookie size is large. I am unable to understand , why enabling this line
leads to this error , when the request is same in both the cases.
Any help will be appreciated?
Thanks
Hemant
Posted at Nginx Forum: