Apache mod-proxy ProxyErrorOverride pour des modèles d’URL spécifiques

J’utilise Apache 2.2 avec mod-proxy et je l’ai configuré avec plusieurs instructions ProxyPass à proxy depuis l’URL distante vers l’URL locale. Je dois avoir des documents d’erreur personnalisés retournés par Apache pour ces URL mandatées, donc j’ai défini “ProxyErrorOverride On” dans ma configuration de mod-proxy avec des directives ErrorDocument (avec un chemin URL local) pour renvoyer des pages d’erreur personnalisées intérêt. Cependant, lorsqu’un code d’état est renvoyé pour lequel je n’ai PAS créé de directive ErrorDocument pour, Apache remplace le corps de la réponse par une page d’erreur par défaut au lieu de laisser le corps de réponse d’origine intact. Cela ne fonctionnera pas avec l’application. Donc j’ai vraiment 2 questions:

1) Est-il possible de configurer Apache pour laisser le corps de réponse d’origine intact pour un code d’état particulier si je n’ai pas de remplacement ErrorDocument défini pour cela?

2) Est-il possible que la directive ProxyErrorOverride ne s’applique qu’à certaines des URL de mes instructions ProxyPass?

Comme indiqué dans le commentaire ci-dessus:

La réponse est: non et non. Si la directive pouvait être limitée à un emplacement, un répertoire ou un ensemble d’URL, alors il y aurait quelque chose dans la section “Contexte” de la page de manuel: httpd.apache.org/docs /2.2/mod/mod_proxy.html#proxyerroroverride

d’autre part: vous pouvez toujours l’append à mod_proxy.c vous-même.

Pour la question 2: certainement faisable. L’utilisation de redirections internes vers un nouvel hôte ou un nouveau port est possible. Bref aperçu à l’aide des hôtes (ajoutez noErrorOverrideUrl, doErrorOverrideUrl dans DNS ou / etc / hosts d’apache-machine):

NameVirtualHost *:80  RewriteEngine On RewriteRule ^(/noErrorOverrideUrl/.*) http://noErrorOverrideUrl$1 [L,P] RewriteRule ^(/doErrorOverrideUrl/.*) http://doErrorOverrideUrl$1 [L,P]   ServerName noErrorOverrideUrl ProxyErrorOverride Off ProxyPass ... ...   ServerName doErrorOverrideUrl ProxyErrorOverride On ProxyPass ... ...  

Bref aperçu en utilisant les ports:

 Listen 80 Listen 81 Listen 82  RewriteEngine On RewriteRule ^(/noErrorOverrideUrl/.*) http://server:81$1 [L,P] RewriteRule ^(/doErrorOverrideUrl/.*) http://server:82$1 [L,P]   ProxyErrorOverride Off ProxyPass ... ...   ProxyErrorOverride On ProxyPass ... ...