Więc waliłem głową w ścianę przez większą część 2 dni, proszę o pomoc.Nginx zużywa nagłówek aktualizacji po proxy_pass
Próbuję ustanowić połączenie Websocket przy użyciu tej konfiguracji django-websocket-redis. Występują dwa wystąpienia programu uwsgi, jeden dla strony internetowej i jeden dla komunikacji internetowej.
Użyłem wireshark mocno, aby dowiedzieć się, co dokładnie się dzieje, i najwyraźniej nginx je nagłówków "Connection: Upgrade" i "Upgrade: websocket".
tutaj jest krytyczną częścią nginx config:
upstream websocket {
server 127.0.0.1:9868;
}
location /ws/ {
proxy_pass_request_headers on;
access_log off;
proxy_http_version 1.1;
proxy_pass http://websocket;
proxy_set_header Connection "Upgrade";
proxy_set_header Upgrade websocket;
}
Jak widać na tych 2 screenshots, tcpdump komunikacji wewnętrznej wynika, że uścisk dłoni działa ładnie. ale w mojej przeglądarce (drugi obraz) brakuje nagłówków.
Wszelkie pomysły są bardzo cenne. Jestem naprawdę zakleszczony tutaj :(
Wersje:
nginx - 1.7.4
uwsgi - 2.0.7
pip zamrażania: Django == 1,7 MySQL-python == 1.2.5 django-Redis sesje == 0.4.0 Django -websocket-Redis == 0.4.2 gevent == 1.0.1 Greenlet == 0.4.4 Redis == 2.10.3 sześć == 1.8.0 uWSGI == 2.0.7 wsgiref == 0,1. 2
niedaleko mojego laptopa, ale czy próbowałeś umieszczenie połączenie Upgrade poza blok pozycja? – Anzel
Połączenie nagłówka: Aktualizacja powinna być ustawiona tylko wtedy, gdy żądanie zostało wykonane na adresie websocket (domain/ws/[facility-params]). Wyjaśnij trochę, czego oczekujesz od nagłówka poza blokiem lokalizacji. – DerShodan
Powiedziałeś, że ten cały pracownik był tylko dla websocket? – Anzel