Whats is the correct message sequence for nginx server?

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:

Hello!

On Wed, Oct 23, 2013 at 02:15:48PM -0400, hemant_psu wrote:

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.

You can’t make an arbitrary nginx module to talk via WebSocket
protocol, this isn’t going to work.

What you can is to use nginx to proxy WebSocket connections to
some WebSocket backend server using proxy_pass, as documented
here:

http://nginx.org/en/docs/http/websocket.html

Note that you need an actual backend server handling WebSocket
connections for proxying to work.


Maxim D.
http://nginx.org/en/donation.html