Nginx et Tomcat – sous-domaine pointant vers un sous-répertoire

J’ai la configuration suivante pour mon application example.com :

  1. Nginx comme proxy inverse pour redirect le trafic du port 80 vers:
  2. Tomcat 7 où je déploie mon application JSF, port 8080
  3. Mes fichiers xhtml se trouvent principalement dans le dossier ROOT: / usr / local / tomcat7 / webapps / ROOT
  4. Mais j’ai des fichiers dans un dossier séparé “forum”: / usr / local / tomcat7 / webapps / ROOT / forum

Ceci est ma configuration nginx par défaut:

server { server_name www.example.com; return 301 $scheme://example.com$request_uri; } server { listen 80; server_name example.com.br; root /usr/local/tomcat7/webapps/ROOT; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080/; } } 

Donc, pour accéder à la page du forum je dois aller à example.com/forum/forum.xhtml (forum.xhtml est l’index)

J’essaie maintenant de définir un sousdomaine , forum.example.com , dans nginx, qui pointe vers le dossier du forum, en conservant l’URL . C’est-à-dire que je ne veux jamais voir le suffixe “/ forum /” dans l’URL. Je veux que le dossier du forum se comporte comme la racine . Donc, si l’utilisateur essaie forum.example.com/anotherPageFromROOT.xhtml, il ne le pourra pas.

C’est ce que j’ai jusqu’à présent:

 server { listen      80; server_name   forum.example.com; location / {   proxy_set_header X-Forwarded-Host $host;   proxy_set_header X-Forwarded-Server $host;   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   proxy_pass http://127.0.0.1:8080/;   rewrite ^/$ /forum/forum.xhtml break; } } 

Problèmes:

  1. Si je clique sur un lien (requête POST) vers le fichier “topic.xhtml” également à l’intérieur du dossier “forum”, l’URL sera forum.example.com/forum/topic.xhtml au lieu de forum.example.com/topic. xhtml comme je veux.
  2. L’utilisateur peut accéder à forum.example.com/anotherPageFromROOT.xhtml normalement

Quelqu’un pourrait-il m’aider s’il vous plaît sur ce que je devrais faire? Merci!

EDIT: Je pense que la cause première du premier problème est l’ action générée par JSF pour mon h:form . Il est toujours généré avec /forum/ .

Le problème n ° 1 est l’éléphant dans la pièce ici. Vous ne pouvez pas (afaik) demander à Tomcat de servir des pages d’un dossier non-ROOT comme si elles se trouvaient dans le dossier ROOT (sans append le nom du dossier dans les URL générées). Il existe un atsortingbut de path pour les éléments de réglage de Context , mais pour une expérience personnelle, ce n’est pas une bonne idée de le modifier (erreurs dans le déploiement du portlet, déploiement des portlets deux fois, etc.).

Si Tomcat a un tel paramètre (indiquez à un portlet à partir d’un dossier de générer des URL racine), essayez de l’utiliser, sinon votre seule option est de configurer un autre Tomcat avec les fichiers corrects dans le dossier racine. le préfixe du dossier.

Une fois ce problème résolu, vous pouvez passer au problème n ° 2. Si vous configurez un autre Tomcat avec les fichiers du forum dans le dossier ROOT, le problème aura disparu; Sinon, laissez-nous savoir ce que vous avez fait.