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>

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

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>

-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>

Il n'a rien dit sur le fait de vouloir une erreur 404.
— user207421
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.