Printemps de Démarrage avec Tomcat intégré derrière proxy Apache

Nous avons un Printemps de Démarrage (Spring MVC) app avec Tomcat intégré dédié, serveur d'applications derrière Apache proxy SSL.

Le port SSL sur le serveur proxy est 4433, transfert vers le port 8080 sur le serveur d'applications.

Donc l'URL du serveur proxy, redirection comme:

https://proxyserver:4433/appname   >>forward>>   http://appserver:8080/

Lors de l'exécution SANS proxy, la première chose qui se passe est que

Printemps de Sécurité redirige la demande, comme:

http://appserver:8080/  >>redirect>>   http://appserver:8080/login

pour afficher le formulaire de connexion, par l'extension de WebSecurityConfigurerAdapter avec

  ...
  httpSecurity.formLogin().loginPage("/login") ...
  ...

Il fonctionne très bien sans le proxy, mais AVEC un mandataire de la redirection doit être changé,

donc, le Printemps devrait plutôt rediriger correspondant à l'URL de proxy, comme:

http://appserver:8080/  >>redirect>>   https://proxyserver:4433/appname/login

mais sans succès encore.

Je suis en train d'appliquer cette solution:
59.8 Tomcat, derrière un serveur proxy frontal

Nous avons configuré mod_proxy dans Apache, et vérifié qu'il envoie attendus en-têtes:

X-Forwarded-For: xxx.xxx.xxx.xxx
X-Forwarded-Host: proxyserver
X-Forwarded-Port: 4433
X-Forwarded-Proto: https

Du démarrage de l'application avec des paramètres:

export ARG1='-Dserver.tomcat.protocol-header=x-forwarded-proto' 
export ARG2='-Dserver.tomcat.remote-ip-header=x-forwarded-for'
java $ARG1 $ARG2 -jar webapp.jar

Encore la redirection ne fonctionne pas.

Il gardera rediriger localement, à http://appserver:8080/login qui n'est pas à la disposition des clients.

Est-il autre chose que nous devons faire pour rendre ce scénario de travail?

Mise à JOUR

Aussi, je suis préoccupé par le "/appname" la partie de l'URL de proxy. Sur le serveur d'applications, l'application est la racine "/". Comment doit-Printemps-être indiqué que "/appname" doit être inclus dans toutes les Url renvoyé aux clients, quand à passer par le proxy?

  • Légèrement inquiétant, la JVM propriétés: serveur.tomcat.protocole de l'en-tête, serveur.tomcat.remote-ip-d'en-tête ..... docs.printemps.io/spring-boot/docs/actuel-SNAPSHOT/de référence/... elles sont écrites avec des caractères de soulignement après le dernier point, tandis que dans le docs.printemps.io/spring-boot/docs/current/reference/html/... elles sont écrites par des tirets. Ce qui est correct? J'ai essayé les deux variantes, mais n'a pas de résoudre le problème ci-dessus.
  • il convient de souligner server.tomcat.remote_ip_header=x-forwarded-for server.tomcat.protocol_header=x-forwarded-proto
  • Printemps de démarrage utilise détendue de liaison pour les propriétés, de sorte qu'il n'a probablement pas d'importance si elles sont des traits de soulignement ou des tirets ou même des points
InformationsquelleAutor Rop | 2014-08-22