| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> |
| <!-- English Revision: 1745815 --> |
| <!-- French translation : Lucien GENTIS --> |
| <!-- Reviewed by : Vincent Deffontaines --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <modulesynopsis metafile="mod_proxy_fcgi.xml.meta"> |
| |
| <name>mod_proxy_fcgi</name> |
| <description>Module fournissant le support de FastCGI à |
| <module>mod_proxy</module></description> |
| <status>Extension</status> |
| <sourcefile>mod_proxy_fcgi.c</sourcefile> |
| <identifier>proxy_fcgi_module</identifier> |
| <compatibility>Disponible depuis la version 2.3 d'Apache</compatibility> |
| |
| <summary> |
| <p>Pour fonctionner, ce module <em>nécessite</em> le chargement de |
| <module>mod_proxy</module>. Il fournit le support du protocole <a |
| href="http://www.fastcgi.com/">FastCGI</a>.</p> |
| |
| <p>Ainsi, pour pouvoir traiter le protocole <code>FastCGI</code>, |
| <module>mod_proxy</module> et <module>mod_proxy_fcgi</module> |
| doivent être chargés dans le serveur.</p> |
| |
| <p>A la différence de <a |
| href="http://httpd.apache.org/mod_fcgid/">mod_fcgid</a> et <a |
| href="http://www.fastcgi.com/">mod_fastcgi</a>, |
| <module>mod_proxy_fcgi</module> n'est pas en mesure de démarrer le |
| processus de l'application ; <program>fcgistarter</program> est |
| fourni à cet effet sur certaines plateformes. Le framework |
| applicatif FastCGI utilisé peut aussi fournir la gestion des |
| processus ou des lancements de programmes externes.</p> |
| |
| <note type="warning"><title>Avertissement</title> |
| <p>N'activez pas la fonctionnalité de mandataire avant d'avoir <a |
| href="mod_proxy.html#access">sécurisé votre serveur</a>. Les |
| serveurs mandataires ouverts sont dangereux non seulement pour |
| votre réseau, mais aussi pour l'Internet au sens large.</p> |
| </note> |
| </summary> |
| |
| <seealso><program>fcgistarter</program></seealso> |
| <seealso><module>mod_proxy</module></seealso> |
| <seealso><module>mod_authnz_fcgi</module></seealso> |
| |
| <section id="examples"><title>Exemples</title> |
| <p>Pour que ces exemples fonctionnent, vous ne devez pas oublier |
| d'activer <module>mod_proxy</module> et |
| <module>mod_proxy_fcgi</module>.</p> |
| |
| <example><title>Instance d'application unique</title> |
| <highlight language="config"> |
| ProxyPass "/mon_appli/" "fcgi://localhost:4000/" |
| </highlight> |
| </example> |
| |
| |
| <p><module>mod_proxy_fcgi</module> interdisant par défaut la |
| réutilisation des connexions, lorsqu'une requête a été traitée, la |
| connexion ne sera pas maintenue ouverte par le processus enfant |
| httpd, et ne sera donc pas réutilisée. Cependant, si l'application |
| FastCGI supporte les connexions httpd simultanées, vous pouvez opter |
| pour la réutilisation des connexions comme dans l'exemple suivant :</p> |
| |
| <example><title>Instance d'application unique, réutilisation |
| des connexions (versions 2.4.11 et supérieures)</title> |
| <highlight language="config"> |
| ProxyPass "/myapp/" "fcgi://localhost:4000/" enablereuse=on |
| </highlight> |
| </example> |
| |
| <p>Dans l'exemple suivant, l'URI de la requête est transmis en tant |
| que chemin du système de fichiers pour l'exécution du démon PHP-FPM. |
| L'URL de la requête est implicitement ajoutée au second paramètre. |
| PHP-FPM est à l'écoute de l'hôte et du port qui |
| suivent fcgi://. La conservation des connexions est activée.</p> |
| <example><title>PHP-FPM</title> |
| <highlight language="config"> |
| ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" enablereuse=on |
| </highlight> |
| </example> |
| |
| <p>Dans l'exemple suivant, l'URI de la requête est transmis en tant |
| que chemin du système de fichiers pour l'exécution du démon PHP-FPM. |
| Dans ce cas cependant, PHP-FPM est à l'écoute d'un socket de domaine |
| unix (UDS). Cette fonctionnalité est disponible à partir de la |
| version 2.4.9. Avec cette syntaxe, si un nom d'hôte et un port sont |
| ajoutés après fcgi://, ils seront ignorés.</p> |
| <example><title>PHP-FPM with UDS</title> |
| <highlight language="config"> |
| # A ce jour, UDS ne supporte pas la réutilisation des connexions |
| ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php5-fpm.sock|fcgi://localhost/var/www/" |
| </highlight> |
| </example> |
| |
| <p>La passerelle à répartition de charge nécessite le chargement du |
| module <module>mod_proxy_balancer</module> et d'au moins un module |
| fournissant un algorithme de répartition de charge, comme |
| <module>mod_lbmethod_byrequests</module> en plus des modules |
| déjà cités. <module>mod_lbmethod_byrequests</module> est le module |
| par défaut et sera utilisé dans cet exemple de configuration.</p> |
| |
| <example><title>Passerelle à répartition de charge vers plusieurs |
| instances de l'application</title> |
| <highlight language="config"> |
| ProxyPass "/myapp/" "balancer://myappcluster/" |
| <Proxy "balancer://myappcluster/"> |
| BalancerMember "fcgi://localhost:4000" |
| BalancerMember "fcgi://localhost:4001" |
| </Proxy> |
| </highlight> |
| </example> |
| |
| <p>Vous pouvez aussi forcer le traitement d'une requête en tant que |
| requête de mandataire inverse en créant un court-circuiteur de |
| gestionnaire approprié. Dans l'exemple ci-dessous, toutes les |
| requêtes pour des scripts PHP seront transmises au serveur FastCGI |
| spécifié par mandat inverse. Cette fonctionnalité est disponible à |
| partir de la version 2.4.10 du serveur HTTP Apache. Pour des raisons |
| de performances, il est recommandé de définir un <a |
| href="mod_proxy.html#workers">worker (configuration d'un |
| mandataire)</a> représentant le même serveur fcgi:// d'arrière-plan. |
| Avec cette configuration, il est possible d'effectuer une |
| correspondance directe entre l'URI et le chemin du fichier sur le |
| serveur, et le chemin local du fichier sera alors transmis au serveur |
| d'arrière-plan. Lorsque FastCGI est configuré ainsi, le serveur est |
| en mesure de calculer le PATH_INFO le plus approprié. |
| </p> |
| <example><title>Mandataire via un gestionnaire</title> |
| <highlight language="config"> |
| <FilesMatch "\.php$"> |
| # Note : la seule partie variable est /path/to/app.sock |
| SetHandler "proxy:unix:/path/to/app.sock|fcgi://localhost/" |
| </FilesMatch> |
| # Définition d'une configuration de mandataire qui convient. |
| # La partie qui est mise en correspondance avec la valeur de |
| # SetHandler est la partie qui suit le "pipe". Si vous devez faire |
| # une distinction, "localhost" peut être changé en un nom de serveur |
| # unique. |
| <Proxy "fcgi://localhost/" enablereuse=on max=10> |
| </Proxy> |
| |
| <FilesMatch ...> |
| SetHandler "proxy:fcgi://localhost:9000" |
| </FilesMatch> |
| |
| <FilesMatch ...> |
| SetHandler "proxy:balancer://myappcluster/" |
| </FilesMatch> |
| </highlight> |
| </example> |
| </section> |
| |
| <section id="env"><title>Variables d'environnement</title> |
| <p>En plus des directives de configuration qui contrôlent le |
| comportement de <module>mod_proxy</module>, de nombreuses |
| <dfn>variables d'environnement</dfn> permettent de piloter le |
| fournisseur du protocole FCGI :</p> |
| <dl> |
| <dt>proxy-fcgi-pathinfo</dt> |
| <dd>Par défaut, <module>mod_proxy_fcgi</module> ne créera jamais |
| ni n'exportera la variable d'environnement <var>PATH_INFO</var>, |
| ce qui permet au serveur FCGI d'arrière-plan de déterminer |
| correctement <var>SCRIPT_NAME</var> et <var>Script-URI</var>, et |
| de se conformer à la section 3.3 de la RFC 3875. Si au contraire |
| vous avez souhaitez que <module>mod_proxy_fcgi</module> génère une |
| "estimation la plus exacte possible" de <var>PATH_INFO</var>, |
| définissez la variable d'environnement |
| <var>proxy-fcgi-pathinfo</var>. Ceci peut servir de |
| contournement pour une bogue présente dans certaines |
| implémentations de FCGI. Cette variable peut être |
| multivaluée afin de pouvoir choisir la valeur la plus appropriée |
| (versions 2.4.11 et supérieures) : |
| <dl> |
| <dt>first-dot</dt> |
| <dd>PATH_INFO est extrait à partir du slash qui suit le |
| <em>premier</em> "." de l'URL.</dd> |
| <dt>last-dot</dt> |
| <dd>PATH_INFO est extrait à partir du slash qui suit le |
| <em>dernier</em> "." de l'URL.</dd> |
| <dt>full</dt> |
| <dd>PATH_INFO est calculé en supposant que l'URL correspond au |
| chemin du système de fichiers.</dd> |
| <dt>unescape</dt> |
| <dd>PATH_INFO correspond à la partie chemin de l'URL avec ses |
| séquences d'échappement décodées.</dd> |
| <dt>toute autre valeur</dt> |
| <dd>PATH_INFO correspond à la partie chemin de l'URL. |
| Auparavant, c'était la seule option pour proxy-fcgi-pathinfo.</dd> |
| </dl> |
| </dd> |
| </dl> |
| </section> |
| |
| </modulesynopsis> |