web-dev-qa-db-fra.com

Comment supprimer les en-têtes client dans Nginx avant de transmettre la demande au serveur en amont?

Le serveur en amont est wowza, qui n'accepte pas les en-têtes personnalisés si je ne les active pas au niveau de l'application.

Nginx fonctionne comme un serveur proxy, à partir du navigateur, je veux envoyer quelques en-têtes personnalisés qui devraient être reçus et enregistrés par Nginx Proxy mais avant de transmettre la demande au serveur en amont, ces en-têtes doivent être supprimés de la demande.

Donc, le serveur en amont ne sait jamais qu'il y a des en-têtes personnalisés.

J'ai essayé proxy_hide_header aussi bien que proxy_set_header "<header>" "", mais semble s'appliquer aux en-têtes de réponse et non aux en-têtes de demande.

Et même si j'accepte d'activer les en-têtes sur wowza, là encore je ne suis pas en mesure de trouver un moyen d'activer les en-têtes au niveau du serveur pour toutes les applications. Currenlty Je dois ajouter des en-têtes à chaque application nouvellement créée, ce que je ne peux pas faire.

Toute aide serait appréciée.

11
maddygoround

Le proxy_set_header HEADER "" fait exactement ce que vous attendez. Voir https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header .

Si la valeur d'un champ d'en-tête est une chaîne vide, ce champ ne sera pas transmis à un serveur mandaté:

proxy_set_header Accept-Encoding "";

Je viens de confirmer que cela fonctionne comme indiqué, j'ai utilisé Nginx v1.12.

16
roryrjb