it-swarm.com.de

nginx - Benutzerdefinierten Header vom Upstream-Server lesen

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.

63
luis

$ 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.

70
cobaco

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.

39
Dev Gosain

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;
}
6
Vladimir