Ich verwende Nginx als Reverse-Proxy und versuche, einen benutzerdefinierten Header aus der Antwort eines Upstream-Servers (Apache) zu lesen, ohne Erfolg. Die Apache-Antwort lautet wie folgt:
HTTP/1.0 200 OK
Date: Fri, 14 Sep 2012 20:18:29 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.10
Connection: close
Content-Type: application/json; charset=UTF-8
My-custom-header: 1
Ich möchte den Wert aus My-custom-header lesen und in einer if-Klausel verwenden:
location / {
// ...
// get My-custom-header value here
// ...
}
Ist das möglich? Danke im Voraus.
$ http _ name_of_the_header_key
wenn Sie also Origin = domain.com
im Header haben, können Sie $http_Origin
verwenden, um " domain.com" zu erhalten.
In nginx werden beliebige Anforderungsheaderfelder unterstützt. Im obigen Beispiel ist der letzte Teil eines Variablennamens der Feldname, der in Kleinbuchstaben umgewandelt wurde, wobei Bindestriche durch Unterstriche ersetzt wurden
Referenzdokument hier: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_
In Ihrem Beispiel wäre die Variable $http_my_custom_header
.
Ich hatte das gleiche Problem. Ich habe sowohl $http_my_custom_header
Als auch $sent_http_my_custom_header
Ausprobiert, aber es hat bei mir nicht funktioniert.
Obwohl dieses Problem mit $upstream_http_my_custom_header
Behoben wurde.
Verwenden Sie $ http_MY_CUSTOM_HEADER
Sie können so etwas schreiben
set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}