Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So lösen Sie die Falle der Nginx-Konfiguration add_header

So lösen Sie die Falle der Nginx-Konfiguration add_header

王林
王林nach vorne
2023-05-17 17:40:061758Durchsuche

Vorwort

add_header ist ein im Header-Modul definierter Befehl, der zum Hinzufügen von HTTP-Antwortheadern verwendet wird. Bitte beachten Sie jedoch, dass es sich lediglich um ein „Hinzufügen“ und nicht um ein Umschreiben handelt. Wenn also bereits ein Header vorhanden ist, führt die Verwendung von add_header zu Problemen. Darüber hinaus unterstützt add_header in niedrigeren Versionen von Nginx die Verwendung in Fehlerseiten nicht.

Das ist eine Anleitung mit vielen Fallstricken. Seine Verarbeitungsphase ist später als die Standortverarbeitung. Obwohl es in den Standort geschrieben werden kann, geht der unverarbeitete add_header am vorherigen Standort verloren, wenn ein anderer Standort neu geschrieben wird. Zum Beispiel:

location = /a {
 add_header a 1;
 rewrite / /b;
}
location = /b {
 add_header b 2;
 return 204;
}

So lösen Sie die Falle der Nginx-Konfiguration add_header

hat keinen 1-Header, oder? Das ist eine Grube!

Eine weitere Gefahr ist das eingangs erwähnte sich wiederholende Problem. Ich möchte beispielsweise den Inhaltstyp für einen Inhalt festlegen, aber da global ein Standardtyp festgelegt ist, wird er wiederholt.

default_type 'text/plain';

location = /a {
 add_header content-type application/json;
 return 200 '"ok"';
}

So lösen Sie die Falle der Nginx-Konfiguration add_header

Natürlich gibt es viele Lösungen, z. B. den Standardtyp für diesen Standort leer zu lassen oder add_header einfach nicht zu verwenden und den Standardtyp für diesen Standort direkt zu ändern.

Der letzte große Fallstrick besteht darin, dass es auf Fehlerseiten nicht wirksam werden kann, was auch in klar definiert ist. Zum Beispiel das folgende Beispiel:

location = /a {
 add_header content-type application/json;
 return 404 '"not found"';
}

Ich hoffe, mit einem JSON zu antworten, aber da der Statuscode 404 ist, wird der add_header hier nicht wirksam.

So lösen Sie die Falle der Nginx-Konfiguration add_header

Obwohl dieses Beispiel default_type verwenden kann, um das Problem zu lösen, was ist, wenn es sich um andere Header handelt? Was soll ich beispielsweise mit „access-control-allow-origin“ tun? Dann gibt es keine Lösung außer der Verwendung von Lua oder anderen Modulen von Drittanbietern, um das Problem zu lösen. Natürlich ist sich auch nginx dieses Problems bewusst, daher heißt es im Dokument auch, dass es einen Parameter unterstützt, der ab Version 1.7.5 immer aufgerufen wird. Obwohl Nginx dieses Problem selbst gelöst hat, steht die auf 1.6.2 basierende TEngine kurz vor dem Scheitern.

Das obige ist der detaillierte Inhalt vonSo lösen Sie die Falle der Nginx-Konfiguration add_header. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen