2009-07-17 6 views
5

Est-ce que quelqu'un sait comment dire à Apache, en mode proxy inverse, d'intercepter ou de piéger 302 réponses (ou 30x) du backend? serveur et rediriger en interne sans envoyer la réponse 30x au client? En fin de compte, le serveur dorsal auquel la réponse est redirigée ne serait pas accessible de l'extérieur (ou ne figure pas dans la configuration d'Apache).Mode proxy inverse Apache intercepte ou piège 302 réponses du serveur principal et redirige en interne sans renvoyer la réponse 302 au client


Ma situation:
Je web_server_A et web_server_B écoute sur le port 6666 et 7777. Ces ports ne sont pas accessibles depuis l'extérieur, mais sont accessibles depuis l'intérieur.
Je peux éventuellement changer le comportement de web_server_A, mais pas celui de web_server_B.
Apache écoute sur les ports 80/443, accessibles depuis l'extérieur et agit en tant que proxy inverse l'envoi de requêtes adressées à web_server_ {A, B} {.example.com à web_server_ A, B}

Le client demande Apache pour web_server_A.example.com/foo. Apache transfère la requête à web_server_A, ce qui crée des éléments, puis renvoie à Apache une réponse HTTP/302 pointant sur web_server_B.example.com/bar/secret_token. Apache renvoie la réponse 302 au client qui envoie ensuite une requête HTTP à Apache pour web_server_B.example.com/bar/secret_token. Apache transmet la requête à web_server_B, qui répond à quelque chose (généralement, il renvoie un gros fichier).


Mon problème:
Je ne veux pas le client de connaître l'URL web_server_B.example.com/bar/secret_token, et, finalement, je ne veux pas web_server_B être accessible depuis l'extérieur.

web_server_A peut faire la demande à web_server_B, puis renvoyer la réponse à partir de web_server_B sans émettre de réponse 302. Mais, la réponse de web_server_B pourrait prendre un certain temps, pourrait être assez grande, et web_server_A ne devrait pas passer trop de temps sur une requête (il n'a pas la capacité de gérer de gros fichiers). fonction


Alors je pensais à un « 302 trappeur » ce serait bien si elle existe, mais si loin de financer ont rien sur le web sur la façon de le faire. Une idée?

+4

Les questions de configuration du serveur recevront probablement une bien meilleure réponse à serverfault.com –

Répondre

0

En tant que proxy inverse, Apache ne pourra pas "bloquer les réponses". Ce n'est pas un censeur. Vous pourriez cependant écrire quelque chose comme ça.

0

En utilisant la directive ProxyPassReverse, web_server_A modifiera l'en-tête Location envoyée par web_server_B, afin que le client ne le sache pas.

pour intercepter la redirection depuis le serveur en amont, vous pouvez également modifier l'en-tête Location. Par exemple "Header unset Location" montrera la page d'erreur par défaut d'apache 30X

Questions connexes