Ich erhalte folgende Fehler:
2014/05/24 11:49:06 [Fehler] 8376 # 0: * 54031 Upstream hat beim Lesen des Antwortheaders vom Upstream einen zu großen Header gesendet, Client: 107.21.193.210, Server: aamjanata.com, Anfrage: "GET / the- Gehirnwäsche-Chroniken-gesponsert-von-Gujarat-Regierung /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- gesponsert von der gujarat-regierung /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by- Gujarat-Regierung /,% 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 / die-Gehirnwäsche-Chroniken-gesponsert-von-Gujarat-Regierung /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the- Gehirnwäsche-Chroniken-gesponsert-von-Gujarat-Regierung /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- gesponsert von der gujarat-regierung /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by- Gujarat-Regierung /,% 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 / die-Gehirnwäsche-Chroniken-gesponsert-von-Gujarat-Regierung /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the- Gehirnwäsche-Chroniken-gesponsert-von-Gujarat-Regierung /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- gesponsert von der gujarat-regierung /,% 20ht
Es ist immer das gleiche. Eine URL, die immer wieder mit Komma getrennt wird. Ich kann nicht herausfinden, was dies verursacht. Hat jemand eine Idee?
Update: Ein weiterer Fehler:
http request count is zero while sending response to client
Hier ist die Konfiguration. Es gibt andere irrelevante Dinge, aber dieser Teil wurde hinzugefügt / bearbeitet
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;
}
Und dann im Serverblock: setze $ 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";
}`
Antworten:
Fügen Sie Ihrer conf-Datei Folgendes hinzu
quelle
fast_cgi_buffers
Sie nicht helfen, versuchen Sie dieproxy_buffers
Antwort unten von @amd/etc/nginx/nginx.conf
und die Werte in http {...}Wenn nginx als Proxy / Reverse-Proxy ausgeführt wird
das heißt, für Benutzer von
ngx_http_proxy_module
Darüber hinaus
fastcgi
ist dieproxy
speichert Modul den Anforderungsheader in einem temporären Puffer.Daher müssen Sie möglicherweise auch das
proxy_buffer_size
und das erhöhenproxy_buffers
oder es vollständig deaktivieren (Bitte lesen Sie die Nginx-Dokumentation ).Beispiel für die Konfiguration der Proxy-Pufferung
Beispiel für das Deaktivieren Ihres Proxy-Puffers (empfohlen für lange Abfrageserver)
Weitere Informationen: Dokumentation zum Nginx-Proxy-Modul
quelle
writev() failed (104: Connection reset by peer) while sending to client
Würden diese Proxy-Einstellungen möglicherweise diesen Fehler beheben und würden sie auf den Upstream-Server oder den Proxy gehen?proxy_buffers 4 ...
? Da Standard 8 zu sein scheintupstream sent too big header while reading response header from upstream
ist die generische Art von Nginx zu sagen: "Ich mag nicht, was ich sehe."3: Sehen Sie sich die Fehlerprotokolle über der Nachricht an. Streamen sie mit protokollierten Zeilen vor der Nachricht?
PHP message: PHP Notice: Undefined index:
Beispielausschnitt aus einer Schleife meiner Protokolldatei:Sie können in der 3. Zeile von unten sehen, dass das Pufferlimit erreicht, gebrochen und der nächste Thread darüber geschrieben wurde. Nginx schloss dann die Verbindung und gab 502 an den Client zurück.
2: Protokollieren Sie alle pro Anforderung gesendeten Header, überprüfen Sie sie und stellen Sie sicher, dass sie den Standards entsprechen (nginx erlaubt nicht, dass ein Cookie älter als 24 Stunden gelöscht / abgelaufen wird, und sendet eine ungültige Inhaltslänge, da Fehlermeldungen gepuffert wurden, bevor der Inhalt gezählt wurde. ..). Der Funktionsaufruf getallheaders kann normalerweise in abstrakten Codesituationen hilfreich sein PHP alle Header
Beispiele beinhalten:
und das:
1: Überprüfen Sie oder erstellen Sie ein Skriptprotokoll, um sicherzustellen, dass Ihr Thread den richtigen Endpunkt erreicht und nicht vor Abschluss beendet wird.
quelle
Plesk Anweisungen
In Plesk 12 wurde Nginx als Reverse-Proxy ausgeführt (was meiner Meinung nach die Standardeinstellung ist). Die aktuelle Top-Antwort funktioniert also nicht, da Nginx auch als Proxy ausgeführt wird.
Ich ging zu
Subscriptions | [subscription domain] | Websites & Domains (tab) | [Virtual Host domain] | Web Server Settings
.Dann können Sie unten auf dieser Seite die zusätzlichen Nginx-Anweisungen festlegen, die ich als Kombination der beiden wichtigsten Antworten hier festgelegt habe:
quelle
Subscriptions | [subscription domain] | Websites & Domains (tab) | [Virtual Host domain] | Web Server Settings
bin ich mir nicht sicher, was Sie meinen?/etc/nginx/conf.d/proxy.conf
und nginx neu gestartet, es funktioniert gut, danke!Wenn Sie das Symfony-Framework verwenden: Versuchen Sie zunächst, ChromePHP zu deaktivieren, bevor Sie mit der Nginx-Konfiguration herumspielen.
1 - Öffnen Sie die Datei app / config / config_dev.yml
2 - Kommentieren Sie diese Zeilen:
ChromePHP packt die json-codierten Debug-Informationen in den X-ChromePhp-Data-Header, der für die Standardkonfiguration von nginx mit fastcgi zu groß ist.
Quelle: https://github.com/symfony/symfony/issues/8413#issuecomment-20412848
quelle
Am Ende stellten wir fest, dass unser einziger Server, auf dem dies auftrat, die fpm-Konfiguration kaputt gemacht hatte, was dazu führte, dass PHP-Fehler / Warnungen / Hinweise, die normalerweise auf der Festplatte protokolliert wurden, über den FCGI-Socket gesendet wurden. Es sieht so aus, als ob es einen Parsing-Fehler gibt, wenn ein Teil des Headers auf die Pufferblöcke aufgeteilt wird.
Also einstellen
php_admin_value[error_log]
reichte auf etwas tatsächlich Beschreibbares zu setzen und php-fpm neu zu starten, um das Problem zu beheben.Wir könnten das Problem mit einem kleineren Skript reproduzieren:
Das Erhöhen der Puffer machte die 502er schwerer zu treffen, aber nicht unmöglich, zB native:
fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;
::Daher glaube ich, dass die richtige Antwort lautet: Korrigieren Sie Ihre fpm-Konfiguration, damit Fehler auf der Festplatte protokolliert werden.
quelle
Dies ist immer noch die höchste SO-Frage bei Google, wenn nach diesem Fehler gesucht wird.
Wenn Sie diesen Fehler erhalten und nicht sofort in die NGINX-Einstellungen eintauchen möchten, sollten Sie Ihre Ausgaben an der Debug-Konsole überprüfen. In meinem Fall habe ich eine Menge Text an die FirePHP / Chromelogger-Konsole ausgegeben, und da dies alles als Header gesendet wird, hat dies den Überlauf verursacht.
Es ist möglicherweise nicht erforderlich, die Webserver-Einstellungen zu ändern, wenn dieser Fehler nur durch das Senden von wahnsinnig vielen Protokollnachrichten verursacht wird.
quelle
Ich bin nicht sicher, ob das Problem damit zusammenhängt, welchen Header PHP sendet. Stellen Sie sicher, dass die Pufferung aktiviert ist. Der einfache Weg besteht darin, eine proxy.conf-Datei zu erstellen:
Und eine fascgi.conf-Datei:
Als nächstes müssen Sie sie auf Ihrem Standardkonfigurationsserver folgendermaßen aufrufen:
quelle