Odpowiedź Nginx proxy_pass została obcięta

9

Używam nginx do proxy żądania https do mojego serwera aplikacji (obecnie działającego pod 8443).
Ten serwer aplikacji obsługuje strony dynamiczne, niektóre z nich zostały ograniczone do jquery.
Strony są błędne, ponieważ wygląda na to, że jquery jest obcięte ... czy istnieje limit rozmiaru pliku czy coś takiego?

Mój nginx conf jest następujący:

server {
listen      443;
server_name my_serv.com;
ssl                 on;
ssl_certificate     certificate.pem;
ssl_certificate_key privatekey.pem;

keepalive_timeout 70;

location / {
  proxy_pass https://localhost:8443;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_buffering off;
  proxy_buffers 8 8k;
}
}
Luc
źródło
2
Sprawdź swój dziennik błędów. Powinien ci powiedzieć, dlaczego jakiekolwiek połączenia zostały wcześniej zamknięte.
kolbyjack
Dlaczego nie pozwalasz nginxowi obsługiwać plików statycznych, takich jak jquery.js?
VBart

Odpowiedzi:

8

Wiem, że to pytanie jest bardzo stare, ale właśnie natknąłem się na ten sam problem. Upewnij się, że użytkownik, z którego korzystasz nginx as, ma uprawnienia do zapisu w katalogu proxy_temp. Jeśli serwujesz większą odpowiedź za pośrednictwem serwera proxy, które nie mogą być wszystkie przechowywane w buforach proxy_buff, reszta danych odpowiedzi zostanie zapisana na dysku w katalogu proxy_temp. Jeśli nie może z powodu nieodpowiednich uprawnień (lub czegoś innego, np. Miejsca na dysku), odpowiedź zostaje obcięta.

Łatwy sposób to stwierdzić, że problemem jest wyczyszczenie pamięci podręcznej przeglądarki i ponowne załadowanie strony przy otwartych narzędziach programistycznych Chrome. Znajdź obcięty plik na karcie sieci, a jeśli rozmiar odpowiada rozmiarowi bufora proxy (w twoim przypadku 64k), prawdopodobnie problem z zapisywaniem na dysk ma nginx.

Więcej informacji o ścieżce proxy_temp_pemp nginx: http://wiki.nginx.org/HttpProxyModule#proxy_temp_path

Steve
źródło
1
Twoja odpowiedź zainspirowała mnie do rozwiązania podobnego problemu
Tyler Long
0

Jeśli w dziennikach dostępu widzisz kod powrotu 304 (niezmodyfikowany) dla obciętego pliku, spróbuj wyczyścić pamięć podręczną przeglądarki. Niestety nie mogłem znaleźć sposobu na „naprawienie” tego z konfiguracji nginx.

Marius
źródło
-1

Istnieje, ale domyślnie jest to 1G:

http://wiki.nginx.org/HttpProxyModule#proxy_max_temp_file_size

Jak powiedział @kolbyjack, w pliku error.log prawdopodobnie występują błędy.

wielomian
źródło
2
To po prostu określa maksymalny rozmiar pliku tymczasowego. nginx nie obetnie odpowiedzi, jeśli nie da się wszystkiego buforować, będzie obsługiwany synchronicznie z poziomu wysyłania.
kolbyjack