Question Comment configurer mod_proxy sur ProxyPass basé sur http vs https?


Apache Tomcat fonctionne avec SSL activé. J'ai HTTP Server Apache agissant en tant que proxy inverse, donc mon si les utilisateurs ont frappé http: // myserver / tomcat / ils sont passés à http: // myserver: 8080.

ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/

J'ai également configuré le serveur HTTP Apache pour SSL, donc lorsque les utilisateurs appuient https: // myserver / tomcat / ils devraient être passés à https: // myserver: 8443 /.

Avec la configuration actuelle de ProxyPass & ProxyPassReverse, ils vont être redirigés vers l'URL autre que ssl. Comment puis-je configurer le passe proxy pour qu'il redirige vers un protocole et un port différents en fonction de la demande entrante?

Autrement dit, si quelqu'un entre via HTTPS, comment puis-je les rediriger vers mon tomcat @ https: // myserver: 8443?


Mettre à jour:

@ mike-insch

J'ai essayé:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ https://myserver:8443/
    ProxyPassReverse /tomcat/ https://myserver:8443/
</VirtualHost>

Maintenant quand je visite: https: // myserver / tomcat / Je reçois "page non trouvée". Je vois dans le journal des erreurs "Le fichier n'existe pas: / var / apache2 / htdocs / tomcat"

Ce qui est correct, mais je m'attendais à ce que la demande soit acheminée vers tomcat qui s'exécute à https: // myserver: 8443 /.

Je suppose que je dois regarder davantage les hôtes virtuels, à moins que quelque chose ne se passe pas comme prévu.


8
2017-07-19 15:36


origine


Je ne pense pas que tu aies besoin du NameVirtualHost directive ici. En outre, vous devrez ajouter les directives appropriées pour activer SSL dans votre <VirtualHost *:443> section. - Mike Insch


Réponses:


Vous devez le faire via deux indépendants <VirtualHost *:X> directives. Votre HTTP les directives vont à l'intérieur <VirtualHost *:80> pendant que votre HTTPS les directives vont à l'intérieur <VirtualHost *:443>. Ajustez selon les besoins si plusieurs hôtes virtuels basés sur l'adresse ou sur le nom sont configurés sur votre serveur. Consultez la documentation Apache 2 pour plus de détails.


4
2017-07-19 15:42



J'ai donc ajouté ce qui suit: NameVirtualHost *: 443 - codecraig
N'oubliez pas d'ajouter la directive SSLProxyEngine on - Ryan


Pour être complet: s'il s'agit d'une option, il est judicieux de mettre fin à SSL sous Apache, plutôt que de laisser Tomcat le gérer également. Si Tomcat est uniquement accessible à partir d'Apache, cela est plus simple et non moins sécurisé.

Dans cette configuration, Apache proxy HTTP et HTTPS pour proxy http://myserver:8080/:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

5
2017-12-04 11:42



Dans ce cas, il n'est pas nécessaire de répéter les directives de proxy dans les deux hôtes virtuels. Vous pouvez simplement les extraire dans le contexte du serveur. - Amit Naidu