front-end do apache para o aplicativo uwsgi websocket

0

Aqui está minha configuração:

Apache (1) - > aplicativo normal uwsgi (2) - > websocket uwsgi app (3)

(1) é configurado da seguinte forma:

ProxyPass /{{prefix}}/static/ !
ProxyPass /{{prefix}}/v3/build/ !
ProxyPass /{{prefix}}/ uwsgi://127.0.0.1:{{admin_uwsgi_port}}/{{prefix}}/

(2) é configurado da seguinte maneira para transferir o processamento do websocket para (3) após a autorização:

socket=127.0.0.1:9097
master=true 
workers=1 
offload-threads=2 
collect-header=Content-Type CONTENT_TYPE 
collect-header=Subscription SUBSCRIPTION 
response-route-if=equal:${CONTENT_TYPE};text/event-stream addvar:SUBSCRIPTION=${SUBSCRIPTION} 
response-route-if=equal:${CONTENT_TYPE};text/event-stream disableheaders: response-route-if=equal:${CONTENT_TYPE};text/event-stream uwsgi:/run/websockets-staging/socket,0,0

Finalmente, (3) é bastante simples:

socket=/run/websockets-staging/socket 
plugins=python,http,gevent 
http-websockets=true
gevent=1000

Graças a strace, vejo que a requisição de websocket de entrada é transferida corretamente para (3), (3) retorna o handshake do websocket que é encaminhado para (2) que o encaminha para (1).

No entanto, o handshake websocket parece ser perdido no caminho de volta para o lado do cliente. isto é, (1) nunca retorna nenhum dado e o websocket é eventualmente fechado no lado do cliente quando o handshake não chega.

Por isso, minha pergunta: o que eu poderia ter feito de errado?

    
por mathieu 28.02.2016 / 14:19

0 respostas