Nginx não faz proxy de websockets apropriadamente

2

Usando a versão de desenvolvimento do nginx (1.3.12). No meu arquivo relevante em sites habilitados:

upstream twisted {
    server 127.0.0.1:8088;
}

server {  

    listen   80; ## listen for ipv4  

    server_name  *.clurn.co.uk clurn.co.uk;  

    access_log  /var/log/nginx/clurn.co.uk.access.log;  

    location / {  
            root   /var/www/clurn.co.uk;  
            index  index.html index.htm;  

    }  

    location /websocket {  
            proxy_pass http://twisted;  
            proxy_http_version 1.1;  
            proxy_set_header Upgrade $http_upgrade;  
            proxy_set_header Connection "Upgrade";  
    }  

    location /websocket/server {  
            deny all;  
    }  

    [...snip...]
}

A única diferença do exemplo no site do nginx é a capital u na atualização, que parecia ser necessário para que as instâncias Autobahn e / ou txWS reconheçam os websockets corretamente (não me lembro qual deles era atm).

Agora, se eu acessar os websockets via 127.0.0.1:8088 no servidor, então parece funcionar, mas se eu acessá-lo via 127.0.0.1/websockets não, então tem que haver algo errado com o empacotamento do pacotes via nginx.

Se eu rodar netcat -l -p 8088 ao invés do Twisted websocket backend, eu posso ver que as requisições são idênticas se acessadas via nginx ou diretamente (originalmente elas não eram, mas mudar o "upgrade" para "Upgrade" fez o cabeçalho linha Connection: Upgrade o mesmo), então esta parte está fazendo proxy corretamente.

No entanto, se eu fizer o telnet em 127.0.0.1:8088 e 127.0.0.1/websocket , copiando e colando a solicitação correta, obtenho uma resposta com o 127.0.0.1:8088 direto e não com o 127.0.0.1/websocket . O que estou fazendo de errado, e como posso configurá-lo para permitir websockets em ambos os lados?

    
por socksy 24.02.2013 / 19:32

1 resposta

2

Eu acho que o problema está em buffer. Conjunto:

proxy_buffering off;

dentro da configuração de localização do websocket.

    
por 22.03.2013 / 22:32

Tags