J'utilise nginx en tant que proxy inverse et j'essaie de lire un en-tête personnalisé à partir de la réponse d'un serveur en amont (Apache) sans succès. La réponse Apache est la suivante:
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
Je veux lire la valeur de My-custom-header et l'utiliser dans une clause if:
location / {
// ...
// get My-custom-header value here
// ...
}
Est-ce possible? Merci d'avance.
$ http _ name_of_the_header_key
c'est-à-dire si vous avez Origin = domain.com
dans l'en-tête, vous pouvez utiliser $http_Origin
pour obtenir " domain.com"
En nginx prend en charge le champ d'en-tête de demande arbitraire. Dans l'exemple ci-dessus, la dernière partie du nom d'une variable est le nom du champ converti en minuscule, les tirets étant remplacés par des traits de soulignement.
Référence doc ici: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_
Pour votre exemple, la variable serait $http_my_custom_header
.
Je faisais face au même problème. J'ai essayé les deux $http_my_custom_header
et $sent_http_my_custom_header
mais ça n'a pas fonctionné pour moi.
Bien que résolu ce problème en utilisant $upstream_http_my_custom_header
.
Utilisez $ http_MY_CUSTOM_HEADER
Vous pouvez écrire quelque chose comme
set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}