Est-il un moyen de supprimer les apaches Reverse Proxy en-Têtes de Requête?
Lorsqu'il agit comme un proxy inverse apache ajoute x-forwarded-têtes, comme décrit ici.
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#x-headers
Dans ma configuration, j'ai configuré Un serveur en tant que proxy. Il y a une règle comme ceci:
RewriteRule proxy:(.*example.com)/(.*) $1.mysecondserver.com/$2 [P]
Cette règle permet au serveur de demande de la ressource à partir d'un de mes autres serveurs.
Sur le second serveur (origine) j'ai un conteneur d'hôte virtuel pour la ressource et une autre règle de réécriture comme ceci:
RewriteRule some-regex some-url [P]
Il peut sembler ne pas faire de sens comme ça, mais il y a beaucoup d'autres choses en cours que j'ai laissé de côté, comme il n'est pas une partie du problème.
Cependant cette dernière demande a ces en-têtes:
[X-Forwarded-For] => ip of 1st server
[X-Forwarded-Host] => example.myseconserver.com
[X-Forwarded-Server] => example.com
Je veux ces en-têtes disparu.
Il me semble être incapable de unset avec mod_headers. Je peux ajouter plus d'entrées à l', mais je ne peux pas les supprimer
Des Idées?
RequestHeader unset X-Forwarded-For
. Cette directive a une priorité plus faible et s'exécute après mod_rewrite juste avant que la requête est exécutée par son maître, à la correction de phase. Je ne suis pas sûr X-Forwarded-*
en-têtes, mais il fonctionne très bien pour l'Agent Utilisateur et similaires-têtes-pas de problèmes de les retirerc'est exactement ce que j'ai essayé, mais ces en-têtes ne semblent pas être modifiable de cette façon
OriginalL'auteur The Surrican | 2011-09-05
Vous devez vous connecter pour publier un commentaire.
réponse corrigé: il n'y a aucun moyen de le faire que depuis son codé en dur
résoudre ce problème dans le code source de mod_proxy_http.c recherche de la partie suivante:
et immédiatement après cela, ajoutez ce code:
puis compiler en cours d'exécution
apxs2 -cia mod_proxy_http.c
désolé, je onu-coché cette réponse, car elle ne fonctionne pas. si je me souviens bien il n'y a aucun moyen, et j'ai fini la correction du module! cependant j'ai longtemps passé à nginx depuis.
Je pense que je vais juste utiliser Apache 2.4, qui vous permet d'utiliser ProxyAddHeaders, à moins que j'ai besoin d'un contrôle plus granulaire - dans ce cas, je vais passer à nginx trop 🙂
je suis d'accord avec vous que c'est probablement la meilleure façon de faire, surtout compte tenu de nginx
Pour être clair, Apache 2.4 a httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxyaddheaders qui à l'aide de ProxyAddHeaders on doit faire comme demandé.
OriginalL'auteur
J'ai eu le même problème sur httpd 2.2 sur CentOS 5. L'installation de httpd 2.4 n'était pas possible. Mais à cause de certaines raisons je ne pouvais pas passer à nginx complètement. Donc je l'ai fait par l'insertion de nginx proxy entre httpd et l'adresse de destination. J'ai donc eu: httpd(
localhost:80/path
) -> nginx(localhost:81/path
) ->http://your.destination/path
. Les étapes de l'Installation sont les suivantes:Ajouter un emplacement dans nginx qui va supprimer ces httpd, reverse proxy-têtes de la requête. Il peut ressembler à ceci:
Je l'ai dans mon "/etc/nginx/conf.d/par défaut.conf" à l'intérieur de la section "serveur". Ceci est le chemin, vous ajoutez "emplacement" habituellement.
je vous remercie de votre réponse m'a beaucoup aidé
OriginalL'auteur
Depuis Apache 2, comme cette jolie réponse dit, la
théoriquement, il désactive. Dans mon expérience, il n'a eu aucun effet. Cependant, combinée avec
et, avec
quelque part il a commencé à travailler.
OriginalL'auteur