Utilisation d’Apache ou de Nginx comme mandataire pour Tomcat
Tomcat tourne sur le port 8080. Utiliser Apache ou Nginx comme serveur mandataire permet de le rendre accessible uniquement par le port 80 tout en bénéficiant des possibilités offertes par ces deux logiciels. Les configurations présentées ici doivent être vues comme des exemples fonctionnels, nous n’abordons pas les questions de certificat même si c’est bien entendu que Tomcat et les fichothèques ne devraient être accessibles que via htpps.
Configuration avec Apache
Avec Apache, nous allons utiliser le connecteur AJP proposé par Tomcat. Pour cela il faut d’abord l’activer dans le fichier de configuration du serveur Tomcat conf/server.xml (dans le cas d’une installation par le paquet Debian, c’est le fichier /etc/tomcat11/server.xml). Le code pour le connecteur AJP est présent dans le fichier mais désactivé dans un commentaire XML. Il suffit de le « décommenter ». On peut au passage désactiver le port 8080 en commentant cette partie.
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" secret="XXXXXXXXXXX"/>Par rapport au contenu originel de server.xml, un seul attribut a été rajouté : @secret="XXXXXXXXXXX". Celui définit un mot de passe utilisé par Apache. Une autre solution aurait été d’utiliser l’attribut @secretRequired="false".
Du côté d’Apache, il faut commencer par activer le module AJP (présent dans le paquet apache2 de Debian) :
a2enmod proxy_ajpLa configuration de notre site (ici bdf5.fichotheque.net) est alors la suivante :
<VirtualHost *:80>
ServerName bdf5.fichotheque.net
ProxyPass / ajp://localhost:8009/ timeout=2400 secret=XXXXXXXXXXX
</VirtualHost>On retrouve avec la propriété secret=XXXXXXXXXXX le mot de passe défini chez Tomcat. La propriété timeout=2400 indique le temps d’attente en secondes, autant prendre une valeur élevée, certains traitements particuliers peuvent prendre du temps si la fichothèque est particulièrement importante.
Configuration avec Nginx
Dans le cas de Nginx, on modifie pas la configuration de Tomcat qui reste avec le port 8080 ouvert. Une configuration minimale fonctionnelle serait la suivante :
server {
listen bdf5.fichotheque.net;
server_name bdf5.fichotheque.net;
location / {
proxy_pass http://localhost:8080/;
proxy_connect_timeout 24000;
proxy_send_timeout 24000;
}
}