Comment exclure une URL pour Apache Mod_proxy?

23

Nous avons deux serveurs Apache en tant que serveur frontal et 4 serveurs Tomcat en tant que serveur principal configurés à l'aide du module mod_proxy comme équilibreur de charge. Maintenant, nous voulons exclure une seule URL tomcat de l'équilibreur de charge mod_proxy. Y a-t-il un moyen ou une règle à exclure?

Paramètre d'équilibrage du proxy:

<Proxy balancer://backend-cluster1>
   BalancerMember http://10.0.0.1:8080 loadfactor=1 route=test1 retry=10
   BalancerMember http://10.0.0.2:8080 loadfactor=1 route=test2 retry=10
</Proxy>
Mughil
la source

Réponses:

39

Vous excluez les chemins de mod_proxy avec un point d'exclamation (!) Avant votre instruction ProxyPass complète, à laquelle votre échantillon manque - Cela ressemblerait à quelque chose ProxyPass /path balancer://backend-cluster1. Par conséquent, pour exclure un chemin, ajoutez:

ProxyPass /my/excluded/path !

avant

ProxyPass /my balancer://backend-cluster1
Alastair McCormack
la source
Mais l'url pour avoir accès derrière le proxyBalancer
Mughil
Merci fuzzyfelt, je demande comment exclure l'url si nous avons configuré l'équilibreur de proxy. J'ai inclus la configuration du proxy dans la question
Mughil
1
Voir la réponse mise à jour. Ajoutez une exclusion avant de définir le chemin à contourner.
Alastair McCormack
2
L'utilisation de cette réponse a très bien fonctionné pour autoriser LetsEncrypt dans l'emplacement du dossier .well-connu par défaut pour un hôte virtuel, lors de l'utilisation de ProxyPass pour y montrer un serveur de chat. Ajoutez avant les autres directives: ProxyPass /.well-known!
Professeur Falken
2

En plus de la réponse d'Alastair McCormack: Si vous utilisez <Location>, vous devez mettre l'exception ci-dessous au lieu d'avant:

<Location /my/>
    ProxyPass balancer://backend-cluster1
</Location>

<Location /my/excluded/path/>
    ProxyPass !
</Location>
Cadre
la source
-2

Vous pouvez mettre une réécriture au-dessus des directives proxy qui donnera aux utilisateurs une erreur 404 lorsqu'ils essaieront d'accéder à l'URL que vous souhaitez exclure. Vous devrez activer rewrite_module.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>
Pablo
la source
Il n'a rien dit sur le fait de vouloir une erreur 404.
user207421