You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2025-03-16 01:56:49

homebrewtainy
Member
Registered: 2020-04-04
Posts: 154

Serveur LAMP multi instances GLPI et derrière un reverse-proxy Apache

Bonjour à toute la Communauté,

J’ai une question technique de déploiement à soumettre.

Le postulat :

- 1 serveur backend webstack LAMP
    EL9.5
    Apache 2.4.xx
    MariaDB 10.5.xx
    PHP 8.3.xx (Zend v4.3.xx - OPcache v8.3.xx)
    SELinux actif et variables configurées pour le GLPI

- 1 serveur frontend reverse-proxy Apache
    EL9.5
    Apache 2.4.xx
    SELinux actif et variables configurées pour Apache en mode reverse-proxy

Sur le backend, deux GLPI sont installés.

Une instance dans la version stable en cours (10.0.xx) et une instance dans la version de développement en cours (11.0.0-alpha...xx).

Chacune de ces instances dispose de son propre cache:set_namespace_prefix de configuré (cache.php) et la configuration globale de Zend-OPcache est ajustée pour des performances satisfaisantes (≥256 Mio).

Ces deux instances sont exposées, depuis le serveur backend, par une configuration Apache individuelle (/etc/httpd/conf.d/<glpistable-instance-name>.conf et /etc/httpd/conf.d/<glpidevelop-instance-name>.conf) comme suit :

Alias "/<glpi{stable,develop}-instance-name>" 
          "/var/www/<glpi{stable,develop}-instance-root>/public"

<Directory /var/www/<glpi{stable,develop}-instance-root>/public>
    Require all granted

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} ^(.+)$
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>

Lorsque l’on accède à ces deux GLPI par l’URL exposée depuis le backend :

    http://<backend_ip-adresse>/<glpi{stable,develop}-instance-name> … tout se passe comme nous le connaissons tous, lorsque que nous installons convenablement un GLPI.

L’inventaire natif fonctionne sur les deux instances.
Et le plugins glpiinventory (déployé en mode marketplace) est pleinement fonctionnel sur l’instance en version stable (testé avec succès sur une tâche Collect).

Maintenant, le serveur reverse-proxy frontend.

Ses rôles :
- frontend Apache derrière le pare-feu du WAN
- réécriture des URL http => https par VirtualHost :

<VirtualHost *:80>
    ServerName domain-name.tld
    ServerAlias <glpistable-instance-name>.domain-name.tld
    ServerAlias <glpidevelop-instance-name>.domain-name.tld

    RewriteEngine On
    RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>

- puis, pour chaque ServerAlias , la redirection vers le backend en fonction du ServerName appelé, pour exemple avec une syntaxe incomplète et application de la configuration SSL pour chaque ServerName :

<VirtualHost *:443>
    ServerName <glpistable-instance-name>.domain-name.tld

    RewriteEngine on

    ProxyPreserveHost on

    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ProxyRequests Off
    RequestHeader set X-Forwarded-Proto "https"

    RewriteRule ????? http://<backend_ip-adresse>/<glpistable-instance-name>/???? ????
    ProxyPassReverse ???? http://<backend_ip-adresse>/<glpidevelop-instance-name>????

    SSLEngine on
    SSLCertificateFile /etc/pki/tls/domain-name.tld/wilcard-SSLcert.domain-name.tld.crt
    SSLCertificateKeyFile /etc/pki/tls/domain-name.tld/wilcard-SSLcert.domain-name.tld.key
    Header always set Strict-Transport-Security "max-age=63072000"
    SSLverifyClient none
</VirtualHost>

Là où je sollicite la communauté, c’est pour m’aider à ajuster les configurations Apache :

- tant du côté backend, si nécessaire

- enfin du côté frontend reverse-proxy pour m’assurer de ne pas omettre une directive
   Apache et leur bonne valeur (***Proxy*** on / off | RequestHeader …)

- et surtout sur les syntaxes cruciales d’entrée et sortie des directives RewriteRule et ProxyPassReverse .

- le cas échéant, le bon ordre de ces directives

Le tout, pour l’accès à ces deux GLPI soit pleinement fonctionnel.
Mais aussi (et principalement) qu’il en soit de même pour le plugin glpiinventory (Deploy, Collect, RemoteInventory …)  sur les deux instances.

A l’heure actuelle, j’arrive accéder, derrière un reverse-proxy, à deux GLPI différents, mais seulement si ils sont sur deux backend distintcs … et seul l’inventaire natif fonctionne correctement.

Les autres tâches du glpiinventory sont moins en veine :
Deploy : ~ OK
Collect : KO
RemoteInventory : KO

Je lance donc un peu une bouteille à la mer et sollicite de votre part un partage de vos configurations Apache type en reverse-proxy (frontend <> backend), pour celles et ceux qui l’exploiteraient avec succès, dans le contexte exposé ci-dessus.

Merci de m’avoir lu ;-)

Last edited by homebrewtainy (2025-03-16 02:01:30)


Creuser, creuser... creuser.
GLPI 10.0.18 [ Linux el 9.5 | Apache/2.4.xx | MariaDB 10.5.xx | PHP 8.3.x ] - Apache HTTPS r-proxy [ Linux el 9.5 | Apache/2.4.xx ]
GLPI Inventory 1.4.0 | Treeview (Arborescence) 1.10.2 |
-- Any conversation not written in French comes from an automatic translation. Thank you for your understanding. --

Offline

Board footer

Powered by FluxBB