Les gens, nous essayons de configurer le proxy inverse Apache pour le scénario suivant:
http://foo.com/APP/v1/main.html
http://foo.com/APP/v2/main.html
/APP/v1/main.html
http://localhost:8080/AppContext/main.html
, indépendamment du fragment de version dans l'URL (v1, v2, etc.).J'ai essayé de faire ça comme ça:
ProxyPassMatch ^/.*?/APP.*?/(.*)$ http://localhost:8080/AppContext/$1
ProxyPassReverse /APP http://localhost:8080/AppContext
Mes questions sont:
ProxyPassMatch
est-elle correcte?ProxyPassReverse
est "statique". Comment puis-je lui faire prendre conscience des choses potentiellement variables après /APP
?Merci pour toutes informations.
-Raj
Vous êtes proche, essayez de changer un peu l'expression régulière pour tenir compte du fragment de version:
ProxyPassMatch ^/.*?/APP.*?/v[0-9]+/(.*)$ http://localhost:8080/AppContext/$1
Le ProxyPassReverse
sert principalement à assurer la réécriture à la volée des champs d'en-tête d'emplacement dans les réponses données par l'application mandatée. Ainsi, lorsqu'il renvoie une redirection 301 vers, disons, http://localhost:8080/AppContext/something
, Apache sait le changer en /APP/v1/something
afin que les informations derrière le proxy ne soient pas exposées. Parce que vous avez une URL dynamique utilisée dans le proxy inverse, vous avez quelques choix ici. Vous pouvez soit l'envoyer à l'équilibreur de charge HAProxy (vous ne savez pas où cela est pour vous), soit en choisir un et espérer le meilleur. Par exemple, si vous avez un équilibreur de charge sur /APP/balancer/
qui envoie ensuite des demandes à /APP/v1/
, /APP/v2/
, /APP/v3/
, etc. Ensuite, vous pouvez faire ceci:
ProxyPassReverse /APP/balancer http://localhost:8080/AppContext
Sinon, vous pouvez simplement le désigner et espérer le meilleur:
ProxyPassReverse /APP/v1 http://localhost:8080/AppContext