Utiliser macOS Server comme proxy devant glpi

Vous hébergez un service gulp sur votre Intranet et voulez le rendre accessible depuis Internet.

Vous avez déjà un serveur macOS en place pour d’autres services (mail, calendar, contacts) accessible depuis Internet

Comment configurer macOS Server comme proxy du service interne glpi

C’est assez simple en soi, il suffit de définir une directive ProxyPass / ProxyPassReverse.

Mais ce qui n’est pas clairement documenté, c’est que depuis El Capitan, la directive ProxyPreserveHost n’est plus activée par défaut.

Prenons pour exemple la configuration suivante : macOS Server possède l’adresse IP 192.168.1.250 et le serveur glpi la 192.168.1.100.

Créez un fichier de configuration contenant :

ProxyPreserveHost on
ProxyPass /glpi http://192.168.1.100/glpi
ProxyPassReverse /glpi http://192.168.1.100/glpi

Ajoutez un include de ce fichier dans les fichiers de configuration de site HTTP or HTTPS ou dans le fichier de configuration générale :

0000_127.0.0.1_34543_.conf 
0000_127.0.0.1_34580_.conf
0000_any_443_.conf.default
0000_any_80_.conf.default virtual_host_global.conf

Comment donner la possibilité d’activer ou non le proxy vers glpi depuis Server.app

Les Webapps peuvent être activées en utilisant la section Web de Server.app, pour un site web spécifique.

  • les fichiers de configuration des webapps config sont dans le répertoire : /Library/Server/Web/Config/apache2/webapps
  • les fichiers de configuration spécifiques de apache2 sont dans : /Library/Server/Web/Config/apache2

Créez un fichier plist pour y définir votre webapp. Renseignez au moins les keys suivantes :

  • unique name (utilisez la notation dns inversée (ex: fr.dscl.glpi)
  • display name : c’est le nom qui apparaît dans l’interface de Server.app (ex: DSCL glpi proxy)
  • sslPolicy :
    <integer>0</integer>    <!-- 0: default, UseSSLWhenEnabled -->
                            <!-- 1: UseSSLAlways -->
                            <!-- 2: UseSSLOnlyWhenCertificateIsTrustable -->
                            <!-- 3: UseSSLNever -->
                            <!-- 4: UseSSLAndNonSSL -->

Ajoutez une key pour le fichier de configuration :

<key>includeFiles</key>
<array>
<string>/Library/Server/Web/Config/apache2/httpd_glpi.conf</string>
</array>

Ajoutez une restriction pour ne permettre l’activation que si le fichier de configuration existe:

<key>installationIndicatorFilePath</key>
<string>/Library/Server/Web/Config/apache2/httpd_glpi.conf</string>

Votre fichier plist ressemble alors à ce qui suit :

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict> 
<key>includeFiles</key>
<array>
<string>/Library/Server/Web/Config/apache2/httpd_glpi.conf</string>
</array>
<key>name</key>
<string>fr.dscl.glpi</string>
<key>displayName</key>
<string>DSCL - glpi proxy</string>
<key>installationIndicatorFilePath</key>
<string>/Library/Server/Web/Config/apache2/httpd_glpi.conf</string>
<key>sslPolicy</key><!-- Determines webapp SSL behavior -->
<integer>0</integer><!-- 0: default, UseSSLWhenEnabled -->
<!-- 1:UseSSLAlways -->
<!-- 2:UseSSLOnlyWhenCertificateIsTrustable -->
<!-- 3:UseSSLNever -->
<!-- 4:UseSSLAndNonSSL -->
</dict>
</plist>

Votre fichier de configuration spécifique de apache2 contient :

ProxyPreserveHost on
ProxyPass /glpi http://192.168.1.100/glpi
ProxyPassReverse /glpi http://192.168.1.100/glpi

capture-decran-2016-11-10-a-19-16-14 capture-decran-2016-11-10-a-19-16-21 capture-decran-2016-11-10-a-19-16-01

Publié dans Services web.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *