Otrzymuję tego rodzaju błędy:
2014/05/24 11:49:06 [error] 8376 # 0: * 54031 upstream wysłał zbyt duży nagłówek podczas czytania nagłówka odpowiedzi z upstream, klient: 107.21.193.210, serwer: aamjanata.com, żądanie: „GET / the- pranie mózgu-kroniki-sponsorowane-przez-gujarat-rząd /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- sponsorowany przez gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by- gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government/ ,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: / aamjanata.com / the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the- pranie mózgu-kroniki-sponsorowane-przez-gujarat-rząd /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- sponsorowany przez gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by- gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government/,%20https: //aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,%20https:/aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government/,%20https:/aamjanata.com / the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the- pranie mózgu-kroniki-sponsorowane-przez-gujarat-rząd /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- sponsorowany przez gujarat-government /,% 20ht
Zawsze jest tak samo. Adres URL powtarzany w kółko z oddzielaniem przecinkiem. Nie mogę ustalić, co to powoduje. Czy ktoś ma pomysł?
Aktualizacja: Kolejny błąd:
http request count is zero while sending response to client
Oto konfiguracja. Istnieją inne nieistotne rzeczy, ale ta część została dodana / zredagowana
fastcgi_cache_path /var/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
# Upstream to abstract backend connection(s) for PHP.
upstream php {
#this should match value of "listen" directive in php-fpm pool
server unix:/var/run/php5-fpm.sock;
}
A potem w bloku serwera: ustaw $ skip_cache 0;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
# Don't cache uris containing the following segments
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
# Don't use the cache for logged in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri /index.php;
include fastcgi_params;
fastcgi_pass php;
fastcgi_read_timeout 3000;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 60m;
}
location ~ /purge(/.*) {
fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
}`
Odpowiedzi:
Dodaj następujące elementy do pliku conf
źródło
fast_cgi_buffers
nie pomóż, wypróbujproxy_buffers
poniższą odpowiedź autorstwa @amd/etc/nginx/nginx.conf
a wartości powinny znajdować się w http {...}Jeśli nginx działa jako proxy / reverse proxy
to znaczy dla użytkowników
ngx_http_proxy_module
Oprócz
fastcgi
tegoproxy
moduł zapisuje również nagłówek żądania w buforze tymczasowym.Może być więc konieczne zwiększenie
proxy_buffer_size
iproxy_buffers
wyłączenie lub całkowite wyłączenie (Proszę przeczytać dokumentację nginx ).Przykład konfiguracji buforowania proxy
Przykład wyłączenia bufora proxy (zalecane w przypadku długich serwerów odpytywania)
Więcej informacji: dokumentacja modułu proxy Nginx
źródło
writev() failed (104: Connection reset by peer) while sending to client
Czy te ustawienia proxy ewentualnie naprawiłyby ten błąd i czy działałyby na serwerze nadrzędnym lub serwerze proxy?proxy_buffers 4 ...
? Ponieważ domyślnie wydaje się być 8upstream sent too big header while reading response header from upstream
to ogólny sposób, w jaki nginx mówi: „Nie podoba mi się to, co widzę”3: Spójrz na dzienniki błędów nad komunikatem, czy jest przesyłane strumieniowo z zarejestrowanymi liniami poprzedzającymi komunikat?
PHP message: PHP Notice: Undefined index:
Przykładowy fragment z pętli mojego pliku dziennika:w trzeciej linii od dołu widać, że limit bufora został przekroczony, zepsuł się, a nad nim napisał następny wątek. Nginx następnie zamknął połączenie i zwrócił klientowi 502.
2: zaloguj wszystkie nagłówki wysłane na żądanie, przejrzyj je i upewnij się, że są one zgodne ze standardami (nginx nie zezwala na usuwanie / wygasanie pliku cookie przez osoby starsze niż 24 godziny, wysyłając niepoprawną długość treści, ponieważ komunikaty o błędach były buforowane przed policzeniem treści. ..). Wywołanie funkcji getallheaders może zwykle pomóc w abstrakcyjnych sytuacjach kodu php pobiera wszystkie nagłówki
Przykłady obejmują:
i to:
1: sprawdź lub zrób dziennik skryptu, aby upewnić się, że Twój wątek osiąga prawidłowy punkt końcowy i nie kończy pracy przed zakończeniem.
źródło
Instrukcje Plesk
W Plesk 12 miałem nginx działający jako odwrotny serwer proxy (który moim zdaniem jest domyślny). Tak więc obecna najwyższa odpowiedź nie działa, ponieważ nginx jest również uruchamiany jako serwer proxy.
Poszedłem do
Subscriptions | [subscription domain] | Websites & Domains (tab) | [Virtual Host domain] | Web Server Settings
.Następnie na dole tej strony możesz ustawić dodatkowe dyrektywy nginx, które ustawiłem jako kombinację dwóch pierwszych odpowiedzi tutaj:
źródło
Subscriptions | [subscription domain] | Websites & Domains (tab) | [Virtual Host domain] | Web Server Settings
nie jestem pewien, co masz na myśli?/etc/nginx/conf.d/proxy.conf
i zrestartowałem nginx, działa dobrze, dzięki!Jeśli korzystasz z frameworka Symfony: zanim zaczniesz zadzierać z konfiguracją Nginx, spróbuj najpierw wyłączyć ChromePHP.
1 - Otwórz aplikację / config / config_dev.yml
2 - Skomentuj następujące wiersze:
ChromePHP spakuje informacje debugowania zakodowane w formacie json w nagłówku X-ChromePhp-Data, który jest zbyt duży dla domyślnej konfiguracji nginx z fastcgi.
Źródło: https://github.com/symfony/symfony/issues/8413#issuecomment-20412848
źródło
W końcu zdaliśmy sobie sprawę, że nasz jedyny serwer, który tego doświadczył, zepsuł konfigurację fpm, co spowodowało błędy / ostrzeżenia / powiadomienia php, które normalnie byłyby logowane na dysk, były wysyłane przez gniazdo FCGI. Wygląda na to, że wystąpił błąd analizowania, gdy część nagłówka zostaje podzielona na części bufora.
Więc ustawienie
php_admin_value[error_log]
czegoś, co faktycznie można zapisać i ponowne uruchomienie php-fpm wystarczyło, aby rozwiązać problem.Możemy odtworzyć problem za pomocą mniejszego skryptu:
Zwiększenie buforów sprawiło, że 502 były trudniejsze do trafienia, ale nie niemożliwe, np. Natywne:
fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;
:Tak więc uważam, że poprawna odpowiedź to: napraw konfigurację fpm, aby rejestrowała błędy na dysku.
źródło
To wciąż najwyższe pytanie SO w Google podczas wyszukiwania tego błędu, więc rozwiążmy go.
Gdy pojawia się ten błąd i nie chcesz od razu zagłębiać się w ustawienia NGINX, możesz sprawdzić swoje dane wyjściowe w konsoli debugowania. W moim przypadku wysyłałem mnóstwo tekstu do konsoli FirePHP / Chromelogger, a ponieważ wszystko to jest wysyłane jako nagłówek, powodowało to przepełnienie.
Zmiana ustawień serwera WWW może nie być potrzebna, jeśli błąd ten jest spowodowany jedynie wysyłaniem niesamowitych ilości komunikatów dziennika.
źródło
Nie jestem pewien, czy problem dotyczy tego, co nagłówek php wysyła. Upewnij się, że buforowanie jest włączone. Prostym sposobem jest utworzenie pliku proxy.conf:
I plik fascgi.conf:
Następnie musisz wywołać je na domyślnym serwerze konfiguracji w ten sposób:
źródło