diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index f7473fb4f21..68c34e97460 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -7,6 +7,7 @@ on:
- 'docs/**'
- STATUS
- CHANGES
+ - README*
- '**.md'
- changes-entries/*
tags:
@@ -17,9 +18,13 @@ on:
- 'docs/**'
- STATUS
- CHANGES
+ - README*
- '**.md'
- changes-entries/*
+permissions:
+ contents: read
+
env:
MARGS: "-j2"
CFLAGS: "-g"
@@ -285,7 +290,7 @@ jobs:
- name: OpenSSL 3.0 LTS
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
env: |
- TEST_OPENSSL3=3.0.18
+ TEST_OPENSSL3=3.0.21
APR_VERSION=1.7.6
APU_VERSION=1.6.3
APU_CONFIG="--without-crypto"
@@ -295,7 +300,7 @@ jobs:
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
notest-cflags: -Werror -O2
env: |
- TEST_OPENSSL3=3.4.4
+ TEST_OPENSSL3=3.4.6
APR_VERSION=1.7.6
APU_VERSION=1.6.3
APU_CONFIG="--without-crypto"
@@ -304,7 +309,7 @@ jobs:
- name: OpenSSL 3.4 no-engine
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
env: |
- TEST_OPENSSL3=3.4.4
+ TEST_OPENSSL3=3.4.6
OPENSSL_CONFIG=no-engine
APR_VERSION=1.7.6
APU_VERSION=1.6.3
@@ -315,7 +320,7 @@ jobs:
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
notest-cflags: -Werror -O2
env: |
- TEST_OPENSSL3=3.5.5
+ TEST_OPENSSL3=3.5.7
OPENSSL_CONFIG=no-engine
APR_VERSION=1.7.6
APU_VERSION=1.6.3
@@ -326,7 +331,7 @@ jobs:
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
notest-cflags: -Werror -O2
env: |
- TEST_OPENSSL3=4.0.0
+ TEST_OPENSSL3=4.0.1
OPENSSL_CONFIG=
APR_VERSION=1.7.6
APU_VERSION=1.6.3
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 5cf01fafe99..7ca926c4dac 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -7,6 +7,8 @@ on:
- 'docs/**'
- STATUS
- CHANGES
+ - README*
+ - '**.md'
- changes-entries/*
tags:
- 2.*
@@ -16,8 +18,13 @@ on:
- 'docs/**'
- STATUS
- CHANGES
+ - README*
+ - '**.md'
- changes-entries/*
+permissions:
+ contents: read
+
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 46811e0d87d..985f9dac11a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -521,7 +521,7 @@ SET(mod_md_extra_sources
modules/md/md_ocsp.c modules/md/md_util.c
modules/md/mod_md_config.c modules/md/mod_md_drive.c
modules/md/mod_md_os.c modules/md/mod_md_status.c
- modules/md/mod_md_ocsp.c modules/md/md_tailscale.c
+ modules/md/mod_md_ocsp.c
)
SET(mod_optional_hook_export_extra_defines AP_DECLARE_EXPORT) # bogus reuse of core API prefix
SET(mod_proxy_extra_defines PROXY_DECLARE_EXPORT)
diff --git a/README b/README
index 8307fc32d79..6db0c1fc408 100644
--- a/README
+++ b/README
@@ -3,10 +3,10 @@
## What is it?
-The Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant
+The Apache HTTP Server is a powerful, flexible, HTTP/1.1 and HTTP/2 compliant, and widely deployed
web server. Originally designed as a replacement for the NCSA HTTP
-Server, it has grown to be the most popular web server on the
-Internet. As a project of the Apache Software Foundation, the
+Server, it has been in continuous development since 1995 and remains
+one of the foundational projects of the Apache Software Foundation. The
developers aim to collaboratively develop and maintain a robust,
commercial-grade, standards-based server with freely available
source code.
@@ -89,7 +89,7 @@ therefore not subject to this notice.
* If you want to be informed about new code releases, bug fixes,
security fixes, general news and information about the Apache server
- subscribe to the apache-announce mailing list as described under
+ subscribe to the announce@httpd.apache.org mailing list as described under
[https://httpd.apache.org/lists.html#http-announce](https://httpd.apache.org/lists.html#http-announce)
* If you want freely available support for running Apache please see the
diff --git a/README.CHANGES b/README.CHANGES
index 26f8c26197a..bb6de8747a4 100644
--- a/README.CHANGES
+++ b/README.CHANGES
@@ -1,19 +1,54 @@
-Changes can be documented in two ways now: Either by directly editing the
-CHANGES file like it was done until now or by storing each entry for the
-CHANGES file correctly formated in a separate file in the changes-entries
+
+# Documenting User-Visible Changes
+
+User-visible changes can be documented in two ways: either by directly
+editing the CHANGES file, or by storing each entry for the CHANGES
+file correctly formatted in a separate file in the changes-entries
directory.
-The benefit of the single file per change approach is that it eases backporting
-the CHANGES entry to a stable branch as it avoids the frequent merge conflicts
-as changes are merged in different orders or not at all in the stable branch.
+This covers any developer-visible changes such as a new module API,
+but e.g. code cleanups which don't have any externally-visible effect
+do not need to be documented in CHANGES.
+
+Changes should be documented by creating a file in changes-entries/
+with the .txt suffix, using the following template:
+
+```
+ *) mod_foo: Fix bug in blah blah.
+ PR The CGI specification (RFC 3875) defines a number of environment
- variables that expand on those defined by the HTTP spec.
- These have been adopted more broadly, and are a standard
+ The CGI specification (RFC 3875) defines a
+ number of meta-variables, many of which derive their values from
+ HTTP request headers. Apache httpd makes these available as
+ environment variables to CGI scripts and other request-processing
+ mechanisms. These have been adopted more broadly, and are a standard
part of passing information between the browser and the
server, and between processes on the server side. Here we
discuss a few of these. For the complete list of request
diff --git a/docs/manual/env.html.fr.utf8 b/docs/manual/env.html.fr.utf8
index 8358059ecc6..5f8efa3b622 100644
--- a/docs/manual/env.html.fr.utf8
+++ b/docs/manual/env.html.fr.utf8
@@ -292,8 +292,10 @@
La spécification sur les CGIs (RFC 3875) définit un
- certain nombre de variables d'environnement qui s'ajoutent à celles définies
- par la spécification de HTTP. Elles ont été plus largement adoptées et
+ certain nombre de méta-variables dont beaucoup sont affectées de leur valeur
+ à partir des en-têtes HTTP. Apache httpd les met à disposition en tant que
+ variables d’environnement pour les scripts CGI et d’autres mécanismes de
+ traitement des requêtes. Elles ont été plus largement adoptées et
constituent une méthode standard pour transmettre des informations entre le
navigateur et le serveur, et entre les processus au sein du serveur. Nous en
décrivons quelques unes ici. Pour une liste complète des variables de
diff --git a/docs/manual/env.xml b/docs/manual/env.xml
index 55788f0aed4..c8a290ea3a7 100644
--- a/docs/manual/env.xml
+++ b/docs/manual/env.xml
@@ -303,9 +303,11 @@
The CGI specification ( The CGI specification ( La spécification sur les CGIs (
- Si vous souhaitez restreindre l'accès à certaines parties de votre
- site web en fonction de l'adresse de l'hôte de vos visiteurs, le
- plus simple pour y parvenir consiste à utiliser le module
+ Si vous souhaitez restreindre l'accès à certaines parties de votre site web
+ en fonction de l'adresse de l'hôte de vos visiteurs, utilisez le module
Les directives Require s'utilisent comme suit : Dans la première forme, nom-hôte est un nom de domaine
pleinement qualifié (fqdn), ou un nom de domaine partiel ; vous
@@ -89,12 +90,29 @@ Require ip ip.address
sous-réseau ou une spécification CIDR de la forme réseau/nnn. Il est
possible de spécifier des adresses IPv4 ou IPv6. Voir la
documentation de mod_authz_host pour d'autres exemples de cette
syntaxe. Vous pouvez insérer le mot-clé Les visiteurs possédant cette adresse ( Et si vous voulez interdire l'accès à un domaine particulier,
vous pouvez spécifier des adresses IP partielles ou des noms de
domaine, comme ceci : Les directives En utilisant la syntaxe Contrôler l'accès en fonction de l'en-tête
@@ -185,12 +215,14 @@ d'accès
Par exemple, pour bloquer l'accès à une ressources entre 20h et
7h du matin, vous pouvez utiliser Toute requête arrivant après 20h ou avant 7h du matin provoquera
l'envoi d'une réponse de type 403 Forbidden. Vous pouvez utiliser
diff --git a/docs/manual/howto/auth.html.en.utf8 b/docs/manual/howto/auth.html.en.utf8
index 1c814055963..d6521d99dce 100644
--- a/docs/manual/howto/auth.html.en.utf8
+++ b/docs/manual/howto/auth.html.en.utf8
@@ -145,8 +145,8 @@ module from each group. Or, if you are just going to put the directives directly in
your main server configuration file, you will of course need to
@@ -218,13 +218,13 @@ module from each group. Let's examine each of those directives individually. The Now, anyone that is listed in the group CGI environment variables ¶
- not pour inverser un
- critère particulier. Notez que le mot not réalise la
+ critère particulier. Le mot not réalise la
négation sur la valeur, et ne peut pas être utilisé seul pour autoriser
ou interdire une requête, car non vrai ne
veut pas ici forcément dire faux. Ainsi, pour interdire la
@@ -104,29 +122,37 @@ Require ip ip.address
spamer votre forum, vous pouvez ajouter cette ligne pour lui refuser
l'accès :10.252.46.165) ne pourront pas voir le
contenu concerné par cette directive. Si vous voulez interdir
l'accès à une machine en fonction de son nom, vous pouvez ajouter
ceci :expr de la directive
AllowOverride directive like the
following:AllowOverride AuthConfig
-
+AllowOverride AuthConfig
+httpd.conf inside a <Directory
"/usr/local/apache/htdocs/secret"> section.AuthType Basic
+
specific. Rather than creating a group file, you can just use
the following directive:AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
Require user rbowen
-
+AuthType directive selects
the method that is used to authenticate the user. The most
@@ -313,14 +313,14 @@ person in AuthType Basic
+AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
AuthGroupFile "/usr/local/apache/passwd/groups"
Require group GroupName
-
+GroupName,
and has an entry in the password file, will be let in, if
@@ -330,8 +330,8 @@ Require group GroupName
Require valid-user- +
Require valid-user+
Using that rather than the Require user rbowen
line will allow anyone in that is listed in the password file,
@@ -377,14 +377,14 @@ Require group GroupName
To select a dbm file rather than a text file, for example:
-<Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider dbm - AuthDBMUserFile "/www/passwords/passwd.dbm" - Require valid-user +scheme that meets your needs. In the following example, both the file and LDAP based authentication providers are being used. -<Directory "/www/docs/private"> +AuthName "Private" +AuthType Basic +AuthBasicProvider dbm +AuthDBMUserFile "/www/passwords/passwd.dbm" +Require valid-user </Directory>- +Other options are available. Consult the
@@ -399,15 +399,15 @@ Require group GroupNamemod_authn_dbmdocumentation for more details.
<Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file ldap - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - Require valid-user +authorization methods can also be used. In this example both file group authorization as well as LDAP group authorization is being used. -<Directory "/www/docs/private"> +AuthName "Private" +AuthType Basic +AuthBasicProvider file ldap +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +Require valid-user </Directory>- +In this example the file provider will attempt to authenticate the user first. If it is unable to authenticate the user, the LDAP @@ -422,17 +422,17 @@ Require group GroupName
<Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - AuthGroupFile "/usr/local/apache/passwd/groups" - Require group GroupName - Require ldap-group cn=mygroup,o=yourorg +<Directory "/www/docs/private"> +AuthName "Private" +AuthType Basic +AuthBasicProvider file +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +AuthGroupFile "/usr/local/apache/passwd/groups" +Require group GroupName +Require ldap-group cn=mygroup,o=yourorg </Directory>- +To take authorization a little further, authorization container directives such as @@ -495,73 +495,15 @@ Require group GroupName
Authentication by username and password is only part of the - story. Frequently you want to let people in based on something - other than who they are. Something such as where they are - coming from.
- -The authorization providers all,
- env, host and ip let you
- allow or deny access based on other host based criteria such as
- host name or ip address of the machine requesting a
- document.
The usage of these providers is specified through the
- Require directive.
- This directive registers the authorization providers
- that will be called during the authorization stage of the request
- processing. For example:
Require ip address -- - -
where address is an IP address (or a partial IP - address) or:
- -Require host domain_name -- - -
where domain_name is a fully qualified domain name - (or a partial domain name); you may provide multiple addresses or - domain names, if desired.
- -For example, if you have someone spamming your message - board, and you want to keep them out, you could do the - following:
- -<RequireAll> - Require all granted - Require not ip 10.252.46.165 -</RequireAll>- - -
Visitors coming from that address will not be able to see - the content covered by this directive. If, instead, you have a - machine name, rather than an IP address, you can use that.
- -<RequireAll> - Require all granted - Require not host host.example.com -</RequireAll>- - -
And, if you'd like to block access from an entire domain, - you can specify just part of an address or domain name:
- -<RequireAll> - Require all granted - Require not ip 192.168.205 - Require not host phishers.example.com moreidiots.example - Require not host ke -</RequireAll>- - -
Using <RequireAll>
- with multiple <Require> directives, each negated with not,
- will only allow access, if all of negated conditions are true. In other words,
- access will be blocked, if any of the negated conditions fails.
all, env,
+ host, and ip with the
+ Require
+ directive.
+ For full details and examples, see the + Access Control howto.
There may be times when authentication puts an unacceptable load
on a provider or on your network. This is most likely to affect users
- of mod_authn_dbd (or third-party/custom providers).
- To deal with this, HTTPD 2.3/2.4 introduces a new caching provider
- mod_authn_socache to cache credentials and reduce
+ of mod_authn_dbd (or third-party/custom providers). The
+ mod_authn_socache module caches credentials and reduces
the load on the origin provider(s).
This may offer a substantial performance boost to some users.
diff --git a/docs/manual/howto/auth.html.fr.utf8 b/docs/manual/howto/auth.html.fr.utf8 index ff5a08b7e44..1295a878c46 100644 --- a/docs/manual/howto/auth.html.fr.utf8 +++ b/docs/manual/howto/auth.html.fr.utf8 @@ -147,11 +147,11 @@ module de chaque groupe. d'une directiveAllowOverride
du style :
- AllowOverride AuthConfig- +
AllowOverride AuthConfig+
Si vous avez l'intention d'ajouter les directives directement - dans le fichier de configuration principal, vous devrez bien entendu + dans le fichier de configuration principal, vous devrez bien entendu posséder les droits en écriture sur ce fichier.
Vous devrez aussi connaître un tant soit peu la structure des @@ -224,13 +224,13 @@ module de chaque groupe.
fichierhttpd.conf à l'intérieur d'une section <Directory
"/usr/local/apache/htdocs/secret"> :
- AuthType Basic +AuthType Basic AuthName "Restricted Files" -# (Following line optional) +# (La ligne suivante est facultative) AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" Require user rbowen- +Examinons ces directives une à une. La directive
-AuthTypedéfinit la méthode utilisée pour authentifier l'utilisateur. La méthode la plus @@ -326,14 +326,14 @@ plusieurs personnes Maintenant, vous devez modifier votre fichier.htaccesscomme suit :AuthType Basic +l'accès à plusieurs personnes. Plutôt que de créer un fichier de groupes, il vous suffit d'ajouter la directive suivante : -AuthType Basic AuthName "By Invitation Only" -# Optional line: +# Ligne facultative : AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" AuthGroupFile "/usr/local/apache/passwd/groups" Require group GroupName- +Maintenant, quiconque appartient au groupe
Nom-de-groupe, et possède une entrée dans le fichier @@ -344,8 +344,8 @@ Require group GroupNameRequire valid-user- +Require valid-user+Le remplacement de la ligne
Require user rbowenpar la ligneRequire valid-userautorisera l'accès à @@ -397,14 +397,14 @@ passe ¶Par exemple, pour sélectionner un fichier dbm à la place d'un fichier texte :
-<Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider dbm - AuthDBMUserFile "/www/passwords/passwd.dbm" - Require valid-user +<Directory "/www/docs/private"> +AuthName "Private" +AuthType Basic +AuthBasicProvider dbm +AuthDBMUserFile "/www/passwords/passwd.dbm" +Require valid-user </Directory>- +D'autres options sont disponibles. Consultez la documentation de
@@ -422,15 +422,15 @@ d'authentification <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file ldap - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - Require valid-user +mod_authn_dbmpour plus de détails.<Directory "/www/docs/private"> +AuthName "Private" +AuthType Basic +AuthBasicProvider file ldap +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +Require valid-user </Directory>- +Dans cet exemple, le fournisseur file va tenter d'authentifier l'utilisateur en premier. S'il n'y parvient pas, le fournisseur LDAP @@ -448,17 +448,17 @@ d'authentification <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - AuthGroupFile "/usr/local/apache/passwd/groups" - Require group GroupName - Require ldap-group cn=mygroup,o=yourorg +
-<Directory "/www/docs/private"> +AuthName "Private" +AuthType Basic +AuthBasicProvider file +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +AuthGroupFile "/usr/local/apache/passwd/groups" +Require group GroupName +Require ldap-group cn=mygroup,o=yourorg </Directory>- +Pour un scénario d'autorisation un peu plus avancé, des directives de conteneur d'autorisation comme
-<RequireAll>et @@ -524,75 +524,14 @@ autorisation ¶Utilisation de fournisseurs d'autorisation pour le contrôle d'accès
-La vérification du nom d'utilisateur et du mot de passe ne - constituent qu'un aspect des méthodes d'authentification. - Souvent, le contrôle d'accès à certaines personnes n'est pas - basé sur leur identité ; il peut dépendre, par exemple de leur - provenance.
- -Les fournisseurs d'autorisation
- -all, -env,hostetipvous - permettent d'accorder ou refuser l'accès en - fonction de critères tels que le nom d'hôte ou l'adresse - IP de la machine qui effectue la requête.L'utilisation de ces fournisseurs est spécifiée à l'aide de - la directive
- -Require. Cette directive - permet d'enregistrer quels fournisseurs d'autorisation - seront appelés dans le processus d'autorisation au cours du - traitement de la requête. Par exemple :Require ip address- - -où adresse est une adresse IP (ou une adresse IP - partielle) ou :
- -Require host domain_name- - -où nom_domaine est un nom de domaine entièrement - qualifé (ou un nom de domaine partiel) ; vous pouvez indiquer - plusieurs adresses ou noms de domaines, si vous le désirez.
- -Par exemple, si vous voulez rejeter les spams dont une - machine vous inonde, vous pouvez utiliser ceci :
- -<RequireAll> - Require all granted - Require not ip 10.252.46.165 -</RequireAll>- - -Ainsi, les visiteurs en provenance de cette adresse ne - pourront pas voir le contenu concerné par cette directive. Si, - par contre, vous connaissez le nom de la machine, vous pouvez - utiliser ceci :
- -<RequireAll> - Require all granted - Require not host host.example.com -</RequireAll>- - -Et si vous voulez interdire l'accès à toutes les machines - d'un domaine, vous pouvez spécifier une partie seulement de - l'adresse ou du nom de domaine :
- -<RequireAll> - Require all granted - Require not ip 192.168.205 - Require not host phishers.example.com moreidiots.example - Require not host ke -</RequireAll>- - -L'utilisation de la directive
+<RequireAll>- avec de multiples directives<Require>, toutes avec la négation -not, n'accordera l'accès que si toutes les - conditions négatives sont vérifiées. En d'autres termes, l'accès - sera refusé si au moins une des conditions négatives n'est pas - vérifiée.La vérification du nom d'utilisateur et du mot de passe ne + constituent qu'un aspect des méthodes d'authentification. Vous pouvez + aussi autoriser ou interdire l’accès en fonction d’autres critères tels + que l’adresse IP du client ou le nom d’hôte en utilisant les + fournisseurs d’autorisation
+ +all,env, +hostetipavec la directiveRequire.Pour des détails complets et des exemples, voir le tutoriel Access Control.
@@ -622,17 +561,14 @@ autorisation ¶Mise en cache de l'authentification ¶
-Dans certains cas, l'authentification constitue une charge - inacceptable pour un fournisseur d'authentification ou votre réseau. - Ceci est susceptible d'affecter les utilisateurs du module -
-mod_authn_dbd(ou les fournisseurs - tiers/personnalisés). Pour résoudre ce problème, HTTPD 2.3/2.4 - propose un nouveau fournisseur de mise en cache, -mod_authn_socache, qui permet de mettre en cache - les données d'authentification, et ainsi réduire la charge du/des - fournisseurs(s) originels.Cette mise en cache apportera un gain en performance substantiel - à certains utilisateurs.
+Dans certains cas, l'authentification constitue une charge inacceptable + pour un fournisseur d'authentification ou votre réseau. Ceci est + susceptible d'affecter les utilisateurs du module +
mod_authn_dbd(ou les fournisseurs tiers/personnalisés). Le + modulemod_authn_socachemet en cache les données + d'authentification, et réduit ainsi la charge du/des fournisseurs(s) + originels.Cette mise en cache apportera un gain en performance + substantiel à certains utilisateurs.
Pour aller plus loin . . . ¶
diff --git a/docs/manual/howto/auth.xml b/docs/manual/howto/auth.xml index a87a5111550..9185ae665d4 100644 --- a/docs/manual/howto/auth.xml +++ b/docs/manual/howto/auth.xml @@ -127,9 +127,11 @@ module from each group. anAllowOverride directive like the following: -+ ++ AllowOverride AuthConfig - +Or, if you are just going to put the directives directly in your main server configuration file, you will of course need to @@ -201,14 +203,16 @@ AllowOverride AuthConfig placed in
-httpd.confinside a <Directory "/usr/local/apache/htdocs/secret"> section.+ ++ AuthType Basic AuthName "Restricted Files" # (Following line optional) AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" Require user rbowen - +Let's examine each of those directives individually. The
AuthType directive selects @@ -304,7 +308,8 @@ person inNow, you need to modify your
-.htaccessfile to look like the following:+ ++ AuthType Basic AuthName "By Invitation Only" # Optional line: @@ -312,7 +317,8 @@ AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" AuthGroupFile "/usr/local/apache/passwd/groups" Require group GroupName - +Now, anyone that is listed in the group
-GroupName, and has an entry in thepasswordfile, will be let in, if @@ -322,9 +328,11 @@ Require group GroupName specific. Rather than creating a group file, you can just use the following directive:+ ++ Require valid-user - +Using that rather than the
Require user rbowenline will allow anyone in that is listed in the password file, @@ -371,15 +379,17 @@ Require valid-userTo select a dbm file rather than a text file, for example:
-+ ++ <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider dbm - AuthDBMUserFile "/www/passwords/passwd.dbm" - Require valid-user +AuthName "Private" +AuthType Basic +AuthBasicProvider dbm +AuthDBMUserFile "/www/passwords/passwd.dbm" +Require valid-user </Directory> - +Other options are available. Consult the
@@ -394,16 +404,18 @@ Require valid-user scheme that meets your needs. In the following example, both the file and LDAP based authentication providers are being used. -mod_authn_dbm documentation for more details.+ ++ <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file ldap - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - Require valid-user +AuthName "Private" +AuthType Basic +AuthBasicProvider file ldap +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +Require valid-user </Directory> - +In this example the file provider will attempt to authenticate the user first. If it is unable to authenticate the user, the LDAP @@ -418,18 +430,20 @@ Require valid-user authorization methods can also be used. In this example both file group authorization as well as LDAP group authorization is being used.
-+ ++ <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - AuthGroupFile "/usr/local/apache/passwd/groups" - Require group GroupName - Require ldap-group cn=mygroup,o=yourorg +AuthName "Private" +AuthType Basic +AuthBasicProvider file +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +AuthGroupFile "/usr/local/apache/passwd/groups" +Require group GroupName +Require ldap-group cn=mygroup,o=yourorg </Directory> - +To take authorization a little further, authorization container directives such as @@ -492,77 +506,15 @@ Require valid-user
+Using authorization providers for access control Authentication by username and password is only part of the - story. Frequently you want to let people in based on something - other than who they are. Something such as where they are - coming from.
- -The authorization providers
- -all, -env,hostandiplet you - allow or deny access based on other host based criteria such as - host name or ip address of the machine requesting a - document.The usage of these providers is specified through the -
- -Require directive. - This directive registers the authorization providers - that will be called during the authorization stage of the request - processing. For example:-Require ip address - - -where address is an IP address (or a partial IP - address) or:
- --Require host domain_name - - -where domain_name is a fully qualified domain name - (or a partial domain name); you may provide multiple addresses or - domain names, if desired.
- -For example, if you have someone spamming your message - board, and you want to keep them out, you could do the - following:
- --<RequireAll> - Require all granted - Require not ip 10.252.46.165 -</RequireAll> - - -Visitors coming from that address will not be able to see - the content covered by this directive. If, instead, you have a - machine name, rather than an IP address, you can use that.
- --<RequireAll> - Require all granted - Require not host host.example.com -</RequireAll> - - -And, if you'd like to block access from an entire domain, - you can specify just part of an address or domain name:
- --<RequireAll> - Require all granted - Require not ip 192.168.205 - Require not host phishers.example.com moreidiots.example - Require not host ke -</RequireAll> - - -Using
+ story. You can also allow or deny access based on other + criteria, such as the client's IP address or hostname, using + the authorization providersRequireAll - with multipleRequire directives, each negated withnot, - will only allow access, if all of negated conditions are true. In other words, - access will be blocked, if any of the negated conditions fails.all,env, +host, andipwith the +Require + directive.For full details and examples, see the + Access Control howto.
Access Control backwards compatibility @@ -596,9 +548,8 @@ Require host domain_namediff --git a/docs/manual/howto/auth.xml.es b/docs/manual/howto/auth.xml.es index 458612d6b78..126e3fb07b4 100644 --- a/docs/manual/howto/auth.xml.es +++ b/docs/manual/howto/auth.xml.es @@ -1,7 +1,7 @@ - + + @@ -135,10 +135,14 @@ module de chaque groupe. d'une directive Authentication Caching There may be times when authentication puts an unacceptable load on a provider or on your network. This is most likely to affect users - of
mod_authn_dbd (or third-party/custom providers). - To deal with this, HTTPD 2.3/2.4 introduces a new caching provider -mod_authn_socache to cache credentials and reduce + ofmod_authn_dbd (or third-party/custom providers). The +mod_authn_socache module caches credentials and reduces the load on the origin provider(s).This may offer a substantial performance boost to some users.
AllowOverride du style : -AllowOverride AuthConfig ++ +AllowOverride AuthConfig + +Si vous avez l'intention d'ajouter les directives directement - dans le fichier de configuration principal, vous devrez bien entendu + dans le fichier de configuration principal, vous devrez bien entendu posséder les droits en écriture sur ce fichier.
Vous devrez aussi connaître un tant soit peu la structure des @@ -211,14 +215,16 @@ module de chaque groupe.
fichierhttpd.confà l'intérieur d'une section <Directory "/usr/local/apache/htdocs/secret"> : -+ ++ AuthType Basic AuthName "Restricted Files" -# (Following line optional) +# (La ligne suivante est facultative) AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" Require user rbowen - +Examinons ces directives une à une. La directive
AuthType définit la méthode @@ -322,15 +328,17 @@ plusieurs personnesMaintenant, vous devez modifier votre fichier
-.htaccesscomme suit :+ ++ AuthType Basic AuthName "By Invitation Only" -# Optional line: +# Ligne facultative : AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" AuthGroupFile "/usr/local/apache/passwd/groups" Require group GroupName - +Maintenant, quiconque appartient au groupe
-Nom-de-groupe, et possède une entrée dans le fichier @@ -341,7 +349,11 @@ Require group GroupName l'accès à plusieurs personnes. Plutôt que de créer un fichier de groupes, il vous suffit d'ajouter la directive suivante :Require valid-user ++ +Require valid-user + +Le remplacement de la ligne
Require user rbowenpar la ligneRequire valid-userautorisera l'accès à @@ -394,15 +406,17 @@ passePar exemple, pour sélectionner un fichier dbm à la place d'un fichier texte :
-+ ++ <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider dbm - AuthDBMUserFile "/www/passwords/passwd.dbm" - Require valid-user +AuthName "Private" +AuthType Basic +AuthBasicProvider dbm +AuthDBMUserFile "/www/passwords/passwd.dbm" +Require valid-user </Directory> - +D'autres options sont disponibles. Consultez la documentation de
@@ -420,16 +434,18 @@ d'authentification conjointement les fournisseurs d'authentification file et LDAP : -mod_authn_dbm pour plus de détails.+ ++ <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file ldap - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - Require valid-user +AuthName "Private" +AuthType Basic +AuthBasicProvider file ldap +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +Require valid-user </Directory> - +Dans cet exemple, le fournisseur file va tenter d'authentifier l'utilisateur en premier. S'il n'y parvient pas, le fournisseur LDAP @@ -447,18 +463,20 @@ d'authentification autorisation à base de fichier de groupes et une autorisation à base de groupes LDAP.
-+ ++ <Directory "/www/docs/private"> - AuthName "Private" - AuthType Basic - AuthBasicProvider file - AuthUserFile "/usr/local/apache/passwd/passwords" - AuthLDAPURL ldap://ldaphost/o=yourorg - AuthGroupFile "/usr/local/apache/passwd/groups" - Require group GroupName - Require ldap-group cn=mygroup,o=yourorg +AuthName "Private" +AuthType Basic +AuthBasicProvider file +AuthUserFile "/usr/local/apache/passwd/passwords" +AuthLDAPURL ldap://ldaphost/o=yourorg +AuthGroupFile "/usr/local/apache/passwd/groups" +Require group GroupName +Require ldap-group cn=mygroup,o=yourorg </Directory> - +Pour un scénario d'autorisation un peu plus avancé, des directives de conteneur d'autorisation comme
@@ -643,17 +598,14 @@ autorisation Utilisation de fournisseurs d'autorisation pour le contrôle d'accès -La vérification du nom d'utilisateur et du mot de passe ne - constituent qu'un aspect des méthodes d'authentification. - Souvent, le contrôle d'accès à certaines personnes n'est pas - basé sur leur identité ; il peut dépendre, par exemple de leur - provenance.
- -Les fournisseurs d'autorisation
- -all, -env,hostetipvous - permettent d'accorder ou refuser l'accès en - fonction de critères tels que le nom d'hôte ou l'adresse - IP de la machine qui effectue la requête.L'utilisation de ces fournisseurs est spécifiée à l'aide de - la directive
- -Require . Cette directive - permet d'enregistrer quels fournisseurs d'autorisation - seront appelés dans le processus d'autorisation au cours du - traitement de la requête. Par exemple :Require ip address - -où adresse est une adresse IP (ou une adresse IP - partielle) ou :
- -Require host domain_name - -où nom_domaine est un nom de domaine entièrement - qualifé (ou un nom de domaine partiel) ; vous pouvez indiquer - plusieurs adresses ou noms de domaines, si vous le désirez.
- -Par exemple, si vous voulez rejeter les spams dont une - machine vous inonde, vous pouvez utiliser ceci :
- --<RequireAll> - Require all granted - Require not ip 10.252.46.165 -</RequireAll> - - -Ainsi, les visiteurs en provenance de cette adresse ne - pourront pas voir le contenu concerné par cette directive. Si, - par contre, vous connaissez le nom de la machine, vous pouvez - utiliser ceci :
- --<RequireAll> - Require all granted - Require not host host.example.com -</RequireAll> - - -Et si vous voulez interdire l'accès à toutes les machines - d'un domaine, vous pouvez spécifier une partie seulement de - l'adresse ou du nom de domaine :
- --<RequireAll> - Require all granted - Require not ip 192.168.205 - Require not host phishers.example.com moreidiots.example - Require not host ke -</RequireAll> - - -L'utilisation de la directive
+RequireAll - avec de multiples directivesRequire , toutes avec la négation -not, n'accordera l'accès que si toutes les - conditions négatives sont vérifiées. En d'autres termes, l'accès - sera refusé si au moins une des conditions négatives n'est pas - vérifiée.La vérification du nom d'utilisateur et du mot de passe ne + constituent qu'un aspect des méthodes d'authentification. Vous pouvez + aussi autoriser ou interdire l’accès en fonction d’autres critères tels + que l’adresse IP du client ou le nom d’hôte en utilisant les + fournisseurs d’autorisation
+ +all,env, +hostetipavec la directiveRequire .Pour des détails complets et des exemples, voir le tutoriel Access Control.
Mise en cache de l'authentification -Dans certains cas, l'authentification constitue une charge - inacceptable pour un fournisseur d'authentification ou votre réseau. - Ceci est susceptible d'affecter les utilisateurs du module -
-mod_authn_dbd (ou les fournisseurs - tiers/personnalisés). Pour résoudre ce problème, HTTPD 2.3/2.4 - propose un nouveau fournisseur de mise en cache, -mod_authn_socache , qui permet de mettre en cache - les données d'authentification, et ainsi réduire la charge du/des - fournisseurs(s) originels.Cette mise en cache apportera un gain en performance substantiel - à certains utilisateurs.
+Dans certains cas, l'authentification constitue une charge inacceptable + pour un fournisseur d'authentification ou votre réseau. Ceci est + susceptible d'affecter les utilisateurs du module +
mod_authn_dbd (ou les fournisseurs tiers/personnalisés). Le + modulemod_authn_socache met en cache les données + d'authentification, et réduit ainsi la charge du/des fournisseurs(s) + originels.Cette mise en cache apportera un gain en performance + substantiel à certains utilisateurs.
Pour aller plus loin . . . diff --git a/docs/manual/howto/auth.xml.ja b/docs/manual/howto/auth.xml.ja index be59176f6bf..cf9b03da24e 100644 --- a/docs/manual/howto/auth.xml.ja +++ b/docs/manual/howto/auth.xml.ja @@ -1,7 +1,7 @@ - + + + + diff --git a/docs/manual/howto/cgi.xml.fr b/docs/manual/howto/cgi.xml.fr index da80a744a87..c643ea18652 100644 --- a/docs/manual/howto/cgi.xml.fr +++ b/docs/manual/howto/cgi.xml.fr @@ -1,7 +1,7 @@ - + @@ -57,28 +57,42 @@Configurer httpd pour autoriser CGI -httpd doit être configuré pour permettre l'exécution des - programmes CGI, pour que vos programmes CGI puissent fonctionner - correctement. Il existe plusieurs méthodes pour y parvenir.
- -Note: si httpd a été compilé avec le support - des modules partagés (DSO), vous devez vous assurer que le module CGI est - chargé ; vous devez pour cela vérifier que la directive +LoadModule correspondante n'a pas été - commentée dans votrehttpd.conf. Une directive correcte - doit ressembler à ceci : - -- LoadModule cgid_module modules/mod_cgid.so - - - - Sous Windows, ou si l'on utilise un module MPM non-threadé comme prefork, - une directive correctement configurée sera du style : - -- LoadModule cgi_module modules/mod_cgi.so - La configuration de httpd doit autoriser l’exécution de CGI pour que les + programmes CGI fonctionnent. Il existe plusieurs manières d’y parvenir, qui + sont décrites ci-après.
+ +La prise en charge de CGI est assurée par deux modules : +
+ +mod_cgid etmod_cgi . +mod_cgid utilise un démon externe dédié pour gérer les + processus CGI et est requis lorsque httpd utilise un MPM threadé (tel que +event ouworker ).mod_cgi + exécute les programmes CGI directement depuis le processus du serveur et est + utilisé avec les MPMs non threadés tels queprefork , ou + sous Windows. Du point de vue de la configuration, ils sont interchangeables + — les directives sont les mêmes. Voir les pages de référence de +mod_cgi etmod_cgid pour les détails de + l’implémentation.Si httpd a été compilé avec le support des modules + partagés (DSO), vous devez vous assurer que le module approprié est chargé ; + vous devez pour cela vérifier que la directive LoadModule correspondante n'a pas été commentée + dans votrehttpd.conf. Pour un MPM threadé : + ++ + + Pour Windows, ou un MPM non threadé comme prefork : + ++LoadModule cgid_module modules/mod_cgid.so + ++ ++LoadModule cgi_module modules/mod_cgi.so + +@@ -95,9 +109,11 @@ module="mod_alias">ScriptAlias se présente comme suit : - + ++ ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/" - +Cet exemple est tiré de votre fichier de configuration
httpd.confpar défaut, si vous avez installé httpd @@ -120,12 +136,11 @@ tant que programme CGI.Par exemple, si une requête pour l'URL -
+http://www.example.com/cgi-bin/test.plest - effectuée, httpd tentera d'exécuter le fichier -/usr/local/apache2/cgi-bin/test.plet en renverra la - sortie. Bien entendu, le fichier doit exister, être exécutable, et - retourner sa sortie d'une manière particulière, sinon httpd - renverra un message d'erreur.http://www.example.com/cgi-bin/test.pyest effectuée, httpd + tentera d'exécuter le fichier +/usr/local/apache2/cgi-bin/test.pyet en renverra la sortie. + Le fichier doit exister, être exécutable, et produire une sortie sous le + format attendu, sinon httpd renverra un message d'erreur.@@ -168,23 +183,27 @@ l'exécution des programmes CGI est permise depuis un répertoire particulier : - + ++ <Directory "/usr/local/apache2/htdocs/somedir"> - Options +ExecCGI +Options +ExecCGI </Directory> - +La directive ci-dessus indique à httpd qu'il doit permettre l'exécution des fichiers CGI. Vous devez aussi indiquer au serveur quels fichiers sont des fichiers CGI. La directive
-AddHandler suivante indique au serveur qu'il doit traiter tous les fichiers possédant une - extensioncgiouplen tant que + extensioncgioupyen tant que programmes CGI :- AddHandler cgi-script .cgi .pl - ++ +AddHandler cgi-script .cgi .py + +@@ -204,23 +223,27 @@ répertoire utilisateur, vous pouvez utiliser la configuration suivante : - @@ -229,8 +252,8 @@+ ++ <Directory "/home/*/public_html"> - Options +ExecCGI - AddHandler cgi-script .cgi +Options +ExecCGI +AddHandler cgi-script .cgi </Directory> - +Pour indiquer un sous-répertoire
-cgi-bind'un répertoire utilisateur où tout fichier sera traité en tant que programme CGI, vous pouvez utiliser ceci :+ ++ <Directory "/home/*/public_html/cgi-bin"> - Options ExecCGI - SetHandler cgi-script +Options ExecCGI +SetHandler cgi-script </Directory> - +Ecrire un programme CGI -Il y a deux différences principales entre la programmation - "standard" et la programmation CGI.
+La programmation CGI diffère de la programmation + "standard" sur deux points.
En premier lieu, toute sortie de votre programme CGI doit être précédée d'un en-tête
MIME-type . Il s'agit d'un @@ -244,7 +267,7 @@En second lieu, votre sortie doit être en HTML, ou tout autre format qu'un navigateur est en mesure d'afficher. La plupart du temps, il s'agira de HTML, mais occasionnellement, vous pouvez être - amené à écrire un programme CGI qui renvoie une image gif, ou un + amené à écrire un programme CGI qui renvoie une image GIF, ou un autre type de contenu non-HTML.
A part ces deux différences, un programme CGI ressemblera à tout @@ -256,33 +279,29 @@
L'exemple suivant est un exemple de programme CGI qui permet d'afficher une ligne de caractères dans votre navigateur. Ecrivez ce qui suit, enregistrez le dans un fichier nommé -
-premier.pl, et placez le dans votre répertoire +premier.py, et placez le dans votre répertoirecgi-bin.-#!/usr/bin/perl -print "Content-type: text/html\n\n"; -print "Hello, World."; - - -Même si Perl ne vous est pas familier, vous devriez être - capable de comprendre le fonctionnement de ce programme. La - première ligne indique à httpd (ou à toute interface à partir de - laquelle le programme s'exécute) que ce programme peut être - exécuté en fournissant son fichier à l'interpréteur -
+/usr/bin/perl. La seconde ligne affiche la - déclaration du type de contenu considéré, suivie de deux paires - "Retour chariot - Nouvelle ligne". Ceci a pour effet d'insérer une - ligne vide après l'en-tête pour marquer la fin des en-têtes HTTP, - et le début du corps du document. La troisième ligne affiche la - chaîne de caractères "Bonjour tout le monde . . .". Et c'est tout - ce dont vous avez besoin.+ + ++#!/usr/bin/env python3 +print("Content-type: text/html\n") +print("Hello, World.") + +La première ligne indique au système d’exploitation quel interpréteur + utiliser. La première invocation de print affiche l’en-tête content-type + suivi d’une ligne vide (le
\ndans la chaîne et la nouvelle + ligne qu’ajouteprint()), qui matérialise la fin des en-têtes + HTTP. La seconde invocation de print affiche le corps. C’est là tout ce + dont un programme CGI a besoin pour produire une réponse.Si vous ouvrez votre navigateur favori et lui indiquez l'adresse
- http://www.example.com/cgi-bin/premier.pl + http://www.example.com/cgi-bin/premier.py ou toute autre URL correspondant à votre programme CGI, Vous @@ -297,9 +316,8 @@ print "Hello, World.";
-Mais ça ne marche toujours pas ! -Vous devriez voir au moins une des quatre sorties suivantes dans - votre navigateur lorsque vous essayez d'accéder à votre programme - CGI depuis le web :
+Quatre sorties basiques pourront apparaître dans votre navigateur lorsque + vous essayez d'accéder à votre programme CGI depuis le web :
- Le flux de sortie de votre programme CGI
@@ -345,9 +363,11 @@ print "Hello, World.";nobody, il suffit de lui attribuer des droits d'exécution pour tout le monde :- chmod a+x premier.pl - ++ +chmod a+x first.py + +En outre, si votre programme doit pouvoir accéder en lecture et/ou écriture à d'autres fichiers, ces derniers devront avoir les @@ -374,13 +394,15 @@ print "Hello, World."; CGI.
Un exemple typique de spécification de programme est le chemin - vers l'interpréteur de script (souvent
-perl) que l'on + vers l'interpréteur de script (souventpython3) que l'on trouve à la première ligne de votre programme CGI et qui va ressembler à ceci :- #!/usr/bin/perl - ++ +#!/usr/bin/env python3 + +Assurez-vous qu'il s'agit bien du chemin correct vers l'interpréteur.
@@ -425,10 +447,10 @@ print "Hello, World.";cd /usr/local/apache2/cgi-bin -
- ./premier.pl + ./premier.py(N'invoquez pas l'interpréteur
perl. Le shell et +(N'invoquez pas l'interpréteur
@@ -476,7 +498,7 @@ print "Hello, World.";python3. Le shell et httpd doivent être capable de le déterminer à partir de l'information sur le chemin située sur la première ligne du script.)Si vous ne maîtrisez pas le fonctionnement de suexec, il vous est déconseillé de l'utiliser. Pour désactiver suexec, supprimer - simplement (ou renommez) l'exécutable
-suexec + (ou renommez) l'exécutablesuexec pointé parSUEXEC_BINet redémarrez le serveur. Si après une lecture de suexec, vous décidez quand-même de l'utiliser, tapez la commandesuexec @@ -521,7 +543,7 @@ print "Hello, World."; variables requises se trouve dans la3875 (Common Gateway Interface).Ce programme CGI basique en Perl permet d'afficher toutes les +
Ce programme CGI basique en Python permet d'afficher toutes les variables d'environnement qui sont échangées. Deux programmes similaires sont fournis avec la distribution de httpd et situés dans le répertoire
-cgi-bin. @@ -533,16 +555,16 @@ print "Hello, World."; variables d'environnement aux variables de base fournies par défaut.-#!/usr/bin/perl -use strict; -use warnings; + ++ +#!/usr/bin/env python3 +import os -print "Content-type: text/html\n\n"; -foreach my $key (keys %ENV) { - print "$key --> $ENV{$key}<br>"; -} - +print("Content-type: text/html\n") +for key, value in os.environ.items(): +print(f"{key} --> {value}<br>") +@@ -600,17 +622,13 @@ foreach my $key (keys %ENV) { partie du travail de base pour vous. Ceci vous permettra de diminuer le nombre d'erreurs et d'accélérer le développement. - Si vous écrivez des programmes CGI en Perl, des modules sont à - votre disposition à CPAN. A ce - sujet, le module le plus populaire est
- -CGI.pm. Vous - pouvez aussi essayerCGI::Lite, qui implémente les - fonctionnalités strictement nécessaires, mais suffisantes pour - la majorité des programmes.Si vous écrivez des programmes CGI en C, vous disposez de nombreuses - options. L'une d'elles est la bibliothèque
+CGICde https://web.mit.edu/wwwdev/www/cgic.html.Si vous écrivez des programmes CGI en Python, le module
cgi+ de la bibliothèque standard (obsolète dans Python 3.11, supprimé dans Python + 3.13) prenait en charge l’analyse de formulaire. Avec les versions actuelles + de Python, utilisez le moduleurllib.parsepour analyser les + chaîne de paramètres et les données de formulaire. Pour des applications + plus complexes, orientez-vous vers un cadriciel WSGI léger, bien que cela + aille au-delà du domaine de la CGI traditionnelle.@@ -628,10 +646,10 @@ foreach my $key (keys %ENV) { programme CGI a été écrit, et, si possible, son code source. Ceci permettra une résolution plus aisée de votre problème. - diff --git a/docs/manual/howto/cgi.xml.ja b/docs/manual/howto/cgi.xml.ja index bfa687f378c..aac22f2f3b9 100644 --- a/docs/manual/howto/cgi.xml.ja +++ b/docs/manual/howto/cgi.xml.ja @@ -1,7 +1,7 @@ - + + + + @@ -56,7 +56,7 @@ modifier les fichiers de configuration principaux du serveur.Notez que les questions à propos de problèmes CGI ne doivent +
+ problème dans le code source de httpd.Les questions à propos de problèmes CGI ne doivent jamais être postées dans la base de données de bogues de httpd, à moins que vous ne soyez sûr d'avoir trouvé un - problème dans le code source de httpd. AuthName AuthUserFile AuthGroupFile -Require +Require @@ -81,9 +81,11 @@ modifier les fichiers de configuration principaux du serveur..config, vous pouvez mettre ceci dans le fichier de configuration de votre serveur : -- AccessFileName ".config" - ++ +AccessFileName ".config" + +Les directives dans les fichiers
la documentation de cette directive contiendra une section Override, spécifiant quelle valeur doit prendre la directive.htaccessutilisent la même @@ -102,7 +104,7 @@ modifier les fichiers de configuration principaux du serveur.AllowOverride pour que cette directive - soit traitée. + soit autorisée.La valeur par défaut de la directive AllowOverride estNone. Cela signifie @@ -159,26 +161,26 @@ modifier les fichiers de configuration principaux du serveur..htaccessest chargé en mémoire chaque fois qu'un document fait l'objet d'une requête. -Notez aussi que httpd doit rechercher les fichiers -
+.htaccessdans tous les répertoires de niveau - supérieur, afin de rassembler toutes les directives qui s'appliquent - au répertoire courant (Voir la section comment sont - appliquées les directives). Ainsi, si un fichier fait l'objet - d'une requête à partir d'un répertoire -/www/htdocs/exemple, httpd doit rechercher les - fichiers suivants :En outre, httpd doit rechercher des fichiers
-.htaccessdans + tous les répertoires de niveau supérieur pour rassembler la totalité des + directives applicables (Voir la section comment sont + appliquées les directives). Ainsi, si un fichier fait l'objet d'une + requête à partir d'un répertoire/www/htdocs/exemple, httpd + doit rechercher les fichiers suivants :+ ++ /.htaccess /www/.htaccess /www/htdocs/.htaccess /www/htdocs/example/.htaccess - +En conséquence, chaque accès à un fichier de ce répertoire nécessite 4 accès au système de fichiers supplémentaires pour rechercher des fichiers
@@ -187,7 +189,7 @@ modifier les fichiers de configuration principaux du serveur. utilisateurs de modifier la configuration du serveur, il peut en résulter des conséquences sur lesquelles vous n'aurez aucun contrôle. Réfléchissez bien avant de donner ce privilège à vos - utilisateurs. Notez aussi que ne pas donner aux utilisateurs les + utilisateurs. Ne pas donner aux utilisateurs les privilèges dont ils ont besoin va entraîner une augmentation des demandes de support technique. Assurez-vous d'avoir informé clairement vos utilisateurs du niveau de privilèges que vous leur @@ -204,46 +206,58 @@ modifier les fichiers de configuration principaux du serveur. contrôle plus fin que dans le cas de la directive.htaccess, même si - aucun de ces fichiers n'est présent. Notez que cet exemple ne peut + aucun de ces fichiers n'est présent. Cet exemple ne peut se produire que si les fichiers.htaccessont été autorisés pour le répertoire/, ce qui est rarement le cas.AllowOverride seule : -+ ++ # N’autoriser que des directives spécifiques, pas des catégories entières de # directives AllowOverride None AllowOverrideList Redirect RedirectMatch RewriteEngine RewriteRule RewriteCond - +Avec cette configuration, toute directive non explicitement spécifiée causera une erreur du serveur si elle est rencontrée dans un fichier
-.htaccess. C’est un bon compromis entre possibilité et impossibilité totales d’outrepasser la configuration globale.Notez que mettre un fichier
+.htaccesscontenant une - directive dans un répertoire/www/htdocs/exemple- revient exactement au même que mettre la même directive dans une - section Directory<Directory "/www/htdocs/exemple">- du fichier de configuration de votre serveur principal :Placer une directive dans un fichier
-.htaccessdans un + répertoire/www/htdocs/exampleéquivaut exactement à placer + cette même directive dans une section<Directory + "/www/htdocs/example">de la configuration globale de votre + serveur :Fichier
+.htaccessdans -/www/htdocs/exemple:Fichier
.htaccessdans/www/htdocs/example+ :Contenu du fichier .htaccess dans - -/www/htdocs/exempleAddType text/example ".exm" +/www/htdocs/example++ +AddType text/example ".exm" + +Section de votre fichier -httpd.conf+ ++ <Directory "/www/htdocs/example"> - AddType text/example ".exm" +AddType text/example ".exm" </Directory> - +L'utilisation des fichiers
-.htaccesspeut être entièrement désactivée en définissant la directiveAllowOverride ànone:AllowOverride None ++ +AllowOverride None + +@@ -93,14 +92,15 @@ Comment sont appliquées les directives ? @@ -251,7 +265,7 @@ AllowOverrideList Redirect RedirectMatch RewriteEngine RewriteRule RewriteCondLes directives de configuration situées dans un fichier
.htaccesss'appliquent au répertoire dans lequel ce fichier.htaccessse trouve, ainsi qu'à tous ses - sous-répertoires. Cependant, il est important de garder à l'esprit + sous-répertoires. Cependant, souvenez-vous qu'il peut y avoir des fichiers.htaccessdans les répertoires de niveau supérieur. Les directives sont appliquées selon l'ordre dans lequel elles sont rencontrées. Ainsi, les @@ -268,18 +282,26 @@ AllowOverrideList Redirect RedirectMatch RewriteEngine RewriteRule RewriteCondDans le répertoire
-/www/htdocs/exemple1se trouve un fichier.htaccesscontenant ce qui suit :Options +ExecCGI ++ -+Options +ExecCGI + +Note : "
+AllowOverride Options" doit être présent +" AllowOverride Options" doit être présent pour permettre l'utilisation de la directive "Options " dans les fichiers -.htaccess..htaccess.Dans le répertoire
-/www/htdocs/exemple1/exemple2se trouve un fichier.htaccesscontenant ce qui suit :Options Includes ++ +Options Includes + +Ainsi, à cause de ce second fichier
-.htaccessdu répertoire/www/htdocs/exemple1/exemple2, l'exécution @@ -304,15 +326,17 @@ AllowOverrideList Redirect RedirectMatch RewriteEngine RewriteRule RewriteCond définition de toute autre option dans les fichiers.htaccess, vous pouvez utiliser :+ ++ <Directory "/www/htdocs"> - AllowOverride All +AllowOverride All </Directory> <Location "/"> - Options +IncludesNoExec -ExecCGI +Options +IncludesNoExec -ExecCGI </Location> - +Dans cet exemple, on considère que le chemin défini par la directive DocumentRoot est @@ -331,16 +355,18 @@ AllowOverrideList Redirect RedirectMatch RewriteEngine RewriteRule RewriteCondContenu du fichier
-.htaccess:+ + -+ AuthType Basic AuthName "Password Required" AuthUserFile "/www/passwords/password.file" AuthGroupFile "/www/passwords/group.file" Require group admins - +Notez que
+AllowOverride AuthConfigdoit être présent - pour que ces directives produisent leur effet.AllowOverride AuthConfigdoit être présent + pour que ces directives produisent leur effet.Vous pouvez vous référer au tutoriel sur l'authentification pour une description plus détaillée de @@ -355,15 +381,17 @@ Includes - SSI) on utilise les directives de configuration suivantes, placées dans un fichier
-.htaccessenregistré dans le répertoire considéré :+ + -+ Options +Includes AddType text/html "shtml" AddHandler server-parsed shtml - +Notez que
+ directives puissent produire leur effet.AllowOverride OptionsetAllowOverride +AllowOverride OptionsetAllowOverride FileInfodoivent être tous les deux présents pour que ces - directives puissent produire leur effet.Vous pouvez vous référer au tutoriel SSI pour une description plus détaillée des SSI.
@@ -377,6 +405,7 @@ différentes dans un contexte de répertoire. En particulier, les règles sont relatives au répertoire courant, et non à l'URI original. Considérez les exemples suivants : +# Dans httpd.conf RewriteRule "^/images/(.+)\.jpg" "/images/$1.png" @@ -388,6 +417,7 @@ RewriteRule "^images/(.+)\.jpg" "images/$1.png" # Dans un fichier .htaccess situé dans le répertoire images/ RewriteRule "^(.+)\.jpg" "$1.png" +On voit que si le fichier
-.htaccessse situe à la racine de vos documents, le slash de tête est supprimé de la valeur de @@ -398,7 +428,7 @@ la chaîne/images/disparaît de cette même valeur de remplacement. Il doit donc en être de même dans votre expression rationnelle.Notez aussi que dans un contexte
.htaccess, les expressions +Dans un contexte
@@ -422,23 +452,27 @@ pour une étude détaillée de l'utilisation du module l’exécution de programmes CGI dans un répertoire particulier. Pour y parvenir, vous pouvez utiliser la configuration suivante : -.htaccess, les expressions rationnelles sont recompilées à chaque requête, alors que dans un contexte de configuration principale, elle ne sont compilées qu’une seule fois et mises en cache.+ ++ Options +ExecCGI AddHandler cgi-script "cgi" "py" - +Alternativement, si vous souhaitez que tous les fichiers d'un répertoire donné soient considérés comme des programmes CGI, vous pouvez utiliser la configuration suivante :
-+ + -+ Options +ExecCGI SetHandler cgi-script - +Notez que
+ directives puissent produire leur effet.AllowOverride OptionsetAllowOverride +AllowOverride OptionsetAllowOverride FileInfodoivent être tous les deux présents pour que ces - directives puissent produire leur effet.Vous pouvez vous référer au tutoriel CGI pour une description plus détaillée de la configuration et de la @@ -460,9 +494,11 @@ SetHandler cgi-script dénué de sens dans votre ficher
-.htaccesset de recharger la page :+ ++ TestMe - +Si aucune erreur (HTTP 500) n'est générée par le serveur, il est pratiquement certain qu'une directive @@ -474,13 +510,15 @@ TestMe utilisée dans votre fichier
-.htaccessn'est pas permise.-[Tue May 06 09:12:31.528374 2025] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: DirectoryIndex not allowed here - ++ +[Thu Jun 18 09:12:31.528374 2026] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: DirectoryIndex not allowed here + +Cela signifie soit que vous utilisez une directive qui n'est jamais permise dans les fichiers
.htaccess, soit - que vous n'avez tout simplement pas défini la directive + que vous n'avez pas défini la directiveAllowOverride à un niveau suffisant pour la directive que vous utilisez. Consultez la documentation de cette directive pour déterminer quel cas @@ -489,9 +527,11 @@ TestMeLe journal des erreurs peut aussi vous signaler une erreur de syntaxe dans l'usage de la directive elle-même.
--[Tue May 06 09:14:02.946218 2025] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: RewriteCond: bad flag delimiters - ++ +[Thu Jun 18 09:14:02.946218 2026] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: RewriteCond: bad flag delimiters + +Dans ce cas, le message d'erreur sera spécifique à l'erreur de syntaxe que vous avez commise.
diff --git a/docs/manual/howto/htaccess.xml.ja b/docs/manual/howto/htaccess.xml.ja index 8672a8c445f..016f3922a00 100644 --- a/docs/manual/howto/htaccess.xml.ja +++ b/docs/manual/howto/htaccess.xml.ja @@ -1,7 +1,7 @@ - + + + + + @@ -43,49 +43,48 @@ plus efficace des ressources réseau. Il ne modifie pas les aspects fondamentaux de HTTP (sa sémantique). Entre autres, il y a toujours des requêtes, des réponses et des en-têtes. Par conséquent, si vous connaissez - HTTP/1, vous connaissez déjà 95% de HTTP/2. -Beaucoup a déjà été écrit à propos de HTTP/2 et de son fonctionnement. La - documentation la plus officielle est bien entendu sa
-7540 (ou cette version au format plus - lisible : YMMV (7540 ). Vous trouverez ici une description des rouages de HTTP/2 dans - leurs moindres détails.Le premier document à lire lorsqu'on ne connaît pas un mécanisme n'est - cependant pas sa RFC. Il est préférable de comprendre tout d'abord ce - que ce mécanisme est censé faire, et seulement ensuite de lire sa RFC - pour comprendre comment il fonctionne. http2 explained de Daniel Stenberg - (l'auteur de curl) - est un bien meilleur document pour démarrer l'étude de HTTP/2. En outre, de - nouveaux langages s'ajoutent régulièrement à sa liste de traductions - disponibles !
-Si vous n'avez pas envie de le lire parce que vous le trouvez trop long, - voici certains pièges à éviter et nouveaux termes à connaître avant de lire - ce document :
+ HTTP/1, vous connaissez déjà 95% deHTTP/2. + +Le protocole est définii dans la
+ +9113 (qui rend obsolète la +7540 originale). Pour une approche plus abordable, voir le + document http2 explained par Daniel + Stenberg, l’auteur de curl. Il couvre les + but et conception de HTTP/2 sans nécessiter d’analyse de la notation RFC + préalable.En bref, il y a quelques nouveaux termes et pièges à éviter que vous + devez garder à l’esprit lors de la lecture de ce document :
+-
- A la différence de HTTP/1 qui est en texte pur, HTTP/2 est un - protocole binaire, et alors que le premier est lisible par - un humain (par exemple pour sniffer le trafic réseau), le second ne - l'est pas. Voir la FAQ - officielle pour plus de détails.
+- À l’opposé de HTTP 1.1 qui est un protocole en texte pur, HTTP/2 est + un protocol binaire. Le premier a été pensé pour être + lisible par un humain (par exemple pour surveiller le trafic réseau), + alors que ce n’est pas le cas pour le second. Vous trouverez plus + d’information dans cette question de + la FAQ officielle.
- h2 correspond à HTTP/2 sur TLS (négociation de protocole via ALPN).
-- h2c correspond à HTTP/2 sur TCP.
-- Une frame ou trame est la plus petite unité de - communication au sein d'une connexion HTTP/2 et comporte une en-tête et - une séquence d'octets de longueur variable dont la structure correspond - au type de trame. Voir la section correspondante de la documentation - officielle pour plus de détails (
7540 ).- Un - stream est un flux bidirectionnel de frames au sein - d'une connexion HTTP/2. La notion correspondante dans HTTP/1 est un - échange de messages de type requête et réponse. Voir la section - correspondante de la documentation officielle pour plus de détails - (
-7540 ).- HTTP/2 peut gérer plusieurs streams de données sur - la même connexion TCP, ce qui permet d'éviter le point de blocage - classique de HTTP/1 pour les requêtes lentes, et de ne pas avoir à - ouvrir de nouvelles connexions TCP pour chaque requête/réponse (les - connexions persistantes ou KeepAlive avaient contourné le problème dans - HTTP/1 mais ne l'avaient pas entièrement résolu)
+- h2c correspond à HTTP/2 sur TCP en texte clair + (sans TLS). Notez que h2c a été supprimé de la spécification actuelle + mais que httpd le prend encore en charge.
+- Une trame (frame) est la plus petite unité de + communication au sein d’une connexion HTTP/2 ; elle comporte un en-tête + et une séquence d’octets de longueur variable structurée en fonction du + type de trame. Vous trouverez plus d’informations dans la documentation + officielle de la
+9113 .- Un flux (stream) est une circulation + bidirectionnelle de trames au sein d’une connexion HTTP/2. Le concept + correspondant dans HTTP 1.1 est un échange de messages requête/réponse. + Vous trouverez plus d’informations dans la documentation officielle de + la
+9113 .- HTTP/2 peut gérer plusieurs flux de données sur la + même connexion TCP, évitant le classique blocage en tête de file + des requêtes HTTP 1.1 lentes, ainsi que la nécessité de réinitier des + connexions TCP pour chaque requête/réponse (KeepAlive contournait le + problème dans HTTP 1.1, mais ne le résolvait pas entièrement).
+HTTP/2 dans Apache httpd Le protocole HTTP/2 est implémenté dans Apache httpd via un module propre, pertinemment nommé
-mod_http2 . Ce - module implémente toutes les fonctionnalités décrites par la RFC 7540 et + module implémente toutes les fonctionnalités décrites par la RFC 9113 et supporte les connexions en texte pur (http:), ou sécurisées (https:). La variante texte pur se nomme 'h2c', et la variante sécurisée 'h2'.h2cpeut être en mode direct ouUpgrade:via une requête initiale en HTTP/1.Server Push est une nouvelle fonctionnalité offerte - aux développeurs web par HTTP/2. La section correspondante de ce document - vous indiquera comment votre application peut en tirer parti.
+Server Push était une nouvelle fonctionnalité offerte + aux développeurs web par HTTP/2, mais elle est maintenant obsolète. Voir la + section EarlyHints pour l’alternative + recommandée.
@@ -135,36 +135,43 @@ Maintenant que vous disposez d'un binaire
-httpdcompilé avec le modulemod_http2 , l'activation de ce dernier nécessite un minimum de configuration supplémentaire. En premier lieu, comme pour tout - module Apache, vous devez le charger :+ module de httpd, vous devez le charger : + ++ LoadModule http2_module modules/mod_http2.so - +La seconde directive que vous devez ajouter à votre fichier de configuration est
-+ + Protocols h2 http/1.1 +Ceci permet de définir h2, la variante sécurisée, comme le protocole préféré pour les connexions à votre serveur. Si vous souhaitez que toutes les variantes soient disponibles, utilisez la directive suivante :
-+ + +Protocols h2 h2c http/1.1 -Selon l'endroit où vous placez cette directive, elle affectera l'ensemble - de votre serveur, ou seulement un ou plusieurs serveurs virtuels. Vous +
Selon l'endroit où vous placez cette directive, elle affectera toute les + connexions, ou seulement celles vers un serveur virtuel spécifique. Vous pouvez aussi l'imbriquer comme dans l'exemple suivant :
-+ + -Protocols http/1.1 <VirtualHost ...> - ServerName test.example.org - Protocols h2 http/1.1 +ServerName test.example.org +Protocols h2 http/1.1 </VirtualHost> +Seules les connexions en HTTP/1 seront alors permises, sauf pour le serveur - virtuel
+test.example.orgqui acceptera aussi les connexions SSL - en HTTP/2.Seules les connexions en HTTP/1 seront alors permises, sauf pour les + connexions SSL vers
test.example.orgqui propose aussi HTTP/2.Utilisez une chaîne d'algorithmes de chiffrement forte La directive
SSLCipherSuite doit être définie avec une chaîne d'algorithmes de chiffrement TLS forte. Même si @@ -182,25 +189,32 @@ Protocols http/1.1L'ordre des protocoles indiqués est aussi important. Par défaut, le premier sera le protocole préféré. Lorsqu'un client offre plusieurs choix, c'est le plus à gauche qui sera sélectionné. Dans
-+ + Protocols http/1.1 h2 +le protocole préféré sera HTTP/1 et il sera toujours sélectionné sauf si un client ne supporte que h2. Comme nous souhaitons communiquer en HTTP/2 avec les clients qui le supportent, la meilleure définition de la directive est
-+ + Protocols h2 h2c http/1.1 +Toujours à propos de l'ordre des protocoles, le client a lui aussi ses propres préférences en la matière. À ce titre, si vous le souhaitez, vous pouvez configurer votre serveur pour qu'il sélectionne non plus son protocole préféré, mais au contraire le protocole préféré du client :
-+ + ++ ProtocolsHonorOrder Off - +Avec cette directive, l'ordre des protocoles que vous avez défini devient caduque et seul l'ordre défini par le client sera pris en compte.
@@ -248,11 +262,10 @@ ProtocolsHonorOrder OffClients -La plupart des navigateurs modernes supportent HTTP/2, mais seulement sur - des connexions SSL : Firefox v43, Chrome v45, Safari v9, iOS Safari v9, - Opera v35, Chrome pour Android v49 et - Internet Explorer v11 sous Windows10 (selon cette source).
+Tous les navigateurs modernes prennent en charge HTTP/2 sur + des connexions TLS (source). La + prise en charge est devenue universelle sur les navigateurs principaux à peu + près en 2015.
D'autres clients et serveurs sont listés dans le wiki des implémentations ; entre autres des implémentations pour c, c++, common @@ -268,14 +281,19 @@ ProtocolsHonorOrder Off
Le premier d'entre eux est bien entendu curl. Assurez-vous au préalable que votre version supporte HTTP/2 en vérifiant ses
-Fonctionnalités:- $ curl -V - curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4 - Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...] - Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 - -homebrew sous Mac OS : - brew install curl --with-openssl --with-nghttp2 ++ ++$ curl -V +curl 8.20.0 (x86_64-pc-linux-gnu) libcurl/8.20.0 OpenSSL/3.5.7 zlib/1.3.1 nghttp2/1.69.0 +Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...] +Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 + +Notes à propos de macOS Homebrew +
curlde Homebrew inclut par défaut la prise en charge de + HTTP/2. Installez le avec la commandebrew install curlet + suivez les instructions affichées pour le mettre en tête du PATH de votre + système.Pour une inspection en profondeur : wireshark.
Le paquet nghttp2 inclut aussi des @@ -290,15 +308,22 @@ ProtocolsHonorOrder Off
Chrome fournit des journaux détaillés des connexions HTTP/2 via la page special net-internals page. Il y - a aussi cette extension intéressante pour Chrome + a aussi cette extension intéressante pour Chrome et Firefox + href="https://addons.mozilla.org/en-us/firefox/addon/http2-indicator/">Firefox qui permet d'indiquer que votre navigateur utilise HTTP/2.
Push serveur +Notification d’obsolescence +Server Push est obsolète dans la
+9113 . Les + navigateurs principaux (Chrome 106+, Edge 106+) ont supprimé sa prise en + charge. Bien quemod_http2 implémente encore push, les + nouveaux déploiements doivent utiliser 103 Early + Hints à titre de méthode plus fiable pour informer les clients à propos + des ressources nécessaires.Le protocole HTTP/2 permet au serveur de proposer (PUSH) des réponses pour lesquelles le client n'a rien demandé. La communication autour de ces réponses est du style : "voici une requête que vous n'avez jamais @@ -323,29 +348,37 @@ ProtocolsHonorOrder Off procéder vous-même à ces expérimentations :
-
mod_http2 inspecte l'en-tête de la réponse et recherche les en-têtesLinksous un certain format :+ ++ Link </xxx.css>;rel=preload, </xxx.js>; rel=preload - +Si la connexion supporte PUSH, ces deux ressources seront envoyées au client. En tant que développeur web vous pouvez définir ces en-têtes soit directement au niveau de la réponse de votre application, soit en configurant votre serveur via
-+ ++ <Location /xxx.html> - Header add Link "</xxx.css>;rel=preload" - Header add Link "</xxx.js>;rel=preload" +Header add Link "</xxx.css>;rel=preload" +Header add Link "</xxx.js>;rel=preload" </Location> - +Si vous souhaitez utiliser des liens
-preloadsans déclencher de PUSH, vous pouvez utiliser le paramètrenopushcomme suit :+ ++ Link </xxx.css>;rel=preload;nopush - +Vous pouvez aussi désactiver les PUSHes pour l'ensemble de votre serveur via la directive
-+ ++ H2Push Off - +À savoir aussi :
Le module maintient un journal des ressources ayant fait l'objet d'un PUSH pour chaque connexion (en général des condensés hash des URLs), et @@ -353,14 +386,13 @@ H2Push Off lorsque la connexion est fermée, le journal de ses PUSHes est supprimé.
Certains développeurs planchent sur la manière de permettre au client d'informer le serveur des ressources qu'il possède déjà dans son cache afin - d'éviter les PUSHes pour ces dernières, mais ceci n'en est actuellement qu'à - un stade très expérimental.
+ d'éviter les PUSHes pour ces dernières, mais aucune norme n’a émergé avant + que push ne devienne obsolète.L' - en-tête Accept-Push-Policy est un autre dispositif expérimental + en-tête Accept-Push-Policy est un dispositif expérimental implémenté dans
- - + chaque requête quels genres de PUSHes il accepte. Ce dispositif a été + abandonné et n’a jamais été adopté.mod_http2 ; il permet au client de définir pour - chaque requête quels genres de PUSHes il accepte.La fonctionnalité PUSH n'apportera pas toujours le gain de performances dans l'obtention de réponses aux requêtes. Vous trouverez plusieurs études sur ce @@ -385,27 +417,31 @@ H2Push Off
- Suggestions précoces +EarlyHints A l'instar des ressources PUSHées, une autre méthode consiste à envoyer des en-têtes
Linkau client avant même que la réponse ne soit prête. Cette méthode utilise la fonctionnalité appelée "Suggestions précoces" (Early Hints) décrite dans la8297 .Pour utiliser cette fonctionnalité, vous devez l'activer explicitement sur le serveur via :
-+ ++ H2EarlyHints on - +Elle n'est en effet pas activée par défaut car certains navigateurs anciens perdent pied avec de telles réponses.
Une fois cette fonctionnalité activée, vous pouvez utiliser la directive
-H2PushResource pour déclencher les suggestions précoces et les PUSHes de ressources :+ ++ <Location /xxx.html> - H2PushResource /xxx.css - H2PushResource /xxx.js +H2PushResource /xxx.css +H2PushResource /xxx.js </Location> - +Le serveur enverra alors au client une réponse
-"103 Early Hints"dès qu'il commencera à traiter la requête. Selon votre application web, cet envoi peut intervenir beaucoup plus tôt que le diff --git a/docs/manual/howto/public_html.html.en.utf8 b/docs/manual/howto/public_html.html.en.utf8 index a46efd91e9d..1ea435e5bfc 100644 --- a/docs/manual/howto/public_html.html.en.utf8 +++ b/docs/manual/howto/public_html.html.en.utf8 @@ -36,14 +36,20 @@ to a URLhttp://example.com/~username/will get content out of the home directory of the user "username", out of the subdirectory specified by theUserDirdirective.Note that, by default, access to these directories is not +
By default, access to these directories is not enabled. You can enable access when using
-UserDirby uncommenting the line:#Include conf/extra/httpd-userdir.conf- +#Include conf/extra/httpd-userdir.conf+in the default config file
+ +conf/httpd.conf, and adapting thehttpd-userdir.conffile as necessary, or by including the appropriate directives in a<Directory>block within the main config file.Third-party distributions of httpd (from your OS vendor or + package manager) often place themod_userdir+ configuration in a separate file, and may enable it by default. + Check your distribution's documentation for specifics. The examples + in this document assume a default source build of httpd.
Per-user web directories
- @@ -71,8 +77,8 @@ assumed to be a directory path relative to the home directory of the specified user. Given this configuration: -
Setting the file path with UserDir
UserDir public_html- +UserDir public_html+the URL
-http://example.com/~rbowen/file.htmlwill be translated to the file path @@ -82,8 +88,8 @@ constructed using that path, plus the username specified. Given this configuration:UserDir /var/html- +UserDir /var/html+the URL
@@ -92,8 +98,8 @@ in which the asterisk is replaced with the username. Given this configuration: -http://example.com/~rbowen/file.htmlwill be translated to the file path/var/html/rbowen/file.htmlUserDir /var/www/*/docs- +UserDir /var/www/*/docs+the URL
http://example.com/~rbowen/file.htmlwill be translated to the file path @@ -101,14 +107,14 @@Multiple directories or directory paths can also be set.
-UserDir public_html /var/html- +-UserDir public_html /var/html+For the URL
+http://example.com/~rbowen/file.html, - Apache will search for~rbowen. If it isn't found, - Apache will search forrbowenin/var/html. If - found, the above URL will then be translated to the file path -/var/html/rbowen/file.htmlThe arguments are considered in the order they appear. + For the URL
http://example.com/~rbowen/file.html, + httpd will search for~rbowen. If it isn't found, + httpd will then search forrbowenin/var/html. + The file will be served from whichever location is found first.@@ -117,8 +123,8 @@+The
-UserDirdirective can be used to redirect user directory requests to external URLs.UserDir http://example.org/users/*/- +UserDir http://example.org/users/*/+The above example will redirect a request for
http://example.com/~bob/abc.htmlto @@ -132,17 +138,17 @@Using the syntax shown in the UserDir documentation, you can restrict what users are permitted to use this functionality:
-UserDir disabled root jro fish- +UserDir disabled root jro fish+The configuration above will enable the feature for all users except for those listed in the
-disabledstatement. You can, likewise, disable the feature for all but a few users by using a configuration like the following:UserDir disabled +UserDir disabled UserDir enabled rbowen krietz- +See
@@ -152,16 +158,16 @@ UserDir enabled rbowen krietzUserDirdocumentation for additional examples.Enabling a cgi directory for each user ¶
-In order to give each user their own cgi-bin directory, you can use +
To give each user their own cgi-bin directory, you can use a
-<Directory>directive to make a particular subdirectory of a user's home directory cgi-enabled.<Directory "/home/*/public_html/cgi-bin/"> - Options ExecCGI - SetHandler cgi-script +<Directory "/home/*/public_html/cgi-bin/"> +Options ExecCGI +SetHandler cgi-script </Directory>- +Then, presuming that
UserDiris set topublic_html, a cgi programexample.cgi@@ -176,7 +182,7 @@ UserDir enabled rbowen krietzAllowing users to alter configuration ¶
-If you want to allows users to modify the server configuration in +
If you want to allow users to modify the server configuration in their web space, they will need to use
.htaccessfiles to make these changes. Ensure that you have setAllowOverrideto a value sufficient for the directives that you want to permit the users diff --git a/docs/manual/howto/public_html.html.es.utf8 b/docs/manual/howto/public_html.html.es.utf8 index da0883672b5..d47e6f0a024 100644 --- a/docs/manual/howto/public_html.html.es.utf8 +++ b/docs/manual/howto/public_html.html.es.utf8 @@ -30,6 +30,10 @@ ko | trEsta traducción podría estar + obsoleta. Consulte la versión en inglés de la + documentación para comprobar si se han producido cambios + recientemente.En sistemas con múltiples usuarios, cada usuario puede tener un website en su directorio home usando la directiva
-UserDir. Los visitantes de una URL diff --git a/docs/manual/howto/public_html.html.fr.utf8 b/docs/manual/howto/public_html.html.fr.utf8 index c1171a977a4..5cbd9a5e11d 100644 --- a/docs/manual/howto/public_html.html.fr.utf8 +++ b/docs/manual/howto/public_html.html.fr.utf8 @@ -38,18 +38,25 @@ visiteurs de l'URLhttp://example.com/~nom_utilisateur/recevront un contenu situé dans le répertoire home de l'utilisateur "nom_utilisateur", et dans le sous-répertoire spécifié par la directiveUserDir.Notez que par défaut, l'accès à ces répertoires n'est +
Par défaut, l'accès à ces répertoires n'est pas permis. Vous pouvez en permettre l'accès à l'aide de la directive
-UserDiren décommentant la ligne :#Include conf/extra/httpd-userdir.conf- +#Include conf/extra/httpd-userdir.conf+dans le fichier de configuration par défaut
+ +conf/httpd.conf, et en adaptant le fichierhttpd-userdir.confselon vos besoins, ou en incluant les directives appropriées dans une section<Directory>du fichier de configuration principal.Les distributions tierces de httpd (fournies par le fabricant de votre + OS ou par le gestionnaire de paquets) placent souvent la configuration de +mod_userdirdans un fichier séparé, et peuvent l’activer + par défaut. Consultez la documentation de votre distribution pour les + spécificités. Les exemples de ce document présupposent une construction par + défaut à partir des sources de httpd.interprété comme chemin relatif au répertoire home de l'utilisateur considéré. Par exemple, avec cette configuration :
Répertoires web utilisateurs
- @@ -80,8 +87,8 @@ avec le système de fichiers
Définition du chemin des fichiers avec UserDir
UserDir public_html- +UserDir public_html+l'URL
sera construit en utilisant ce chemin, suivi du nom de l'utilisateur considéré. Par exemple, avec cette configuration :http://example.com/~rbowen/fichier.htmlcorrespondra au chemin fichier @@ -91,9 +98,8 @@ avec le système de fichiersUserDir /var/html- - +UserDir /var/html+l'URL
@@ -102,8 +108,8 @@ avec le système de fichiers remplacé par le nom de l'utilisateur dans le chemin du fichier correspondant. Par exemple, avec cette configuration : -http://example.com/~rbowen/fichier.htmlcorrespondra au chemin fichier/var/html/rbowen/fichier.htmlUserDir /var/www/*/docs- +UserDir /var/www/*/docs+l'URL
http://example.com/~rbowen/fichier.htmlcorrespondra au chemin fichier @@ -112,14 +118,14 @@ avec le système de fichiersOn peut aussi définir plusieurs répertoires ou chemins de répertoires.
-UserDir public_html /var/html- +-UserDir public_html /var/html+Avec l'URL
+http://example.com/~rbowen/fichier.html, - Apache va rechercher~rbowen. S'il ne le trouve pas, - Apache va rechercherrbowendans -/var/html. S'il le trouve, l'URL ci-dessus correspondra - au chemin fichier/var/html/rbowen/file.htmlLes arguments sont pris en compte selon l’ordre dans lequel ils + apparaissent. Pour l’URL
http://example.com/~rbowen/file.html, + httpd recherchera d’abord~rbowen. Si ce dernier n’est pas + trouvé, httpd chercherarbowendans/var/html. Le + fichier sera servi depuis le premier emplacement trouvé.@@ -128,8 +134,8 @@ avec le système de fichiersOn peut utiliser la directive
-UserDirpour rediriger les requêtes relatives aux répertoires utilisateurs vers des URLs externes.UserDir http://example.org/users/*/- +UserDir http://example.org/users/*/+L'exemple ci-dessus va rediriger une requête pour
-http://example.com/~bob/abc.htmlvers @@ -144,8 +150,8 @@ avec le système de fichiers vous pouvez définir quels utilisateurs sont autorisés à utiliser cette fonctionnalité :UserDir disabled root jro fish- +UserDir disabled root jro fish+La configuration ci-dessus va autoriser l'utilisation de la fonctionnalité pour tous les utilisateurs, à l'exception de ceux @@ -154,10 +160,9 @@ avec le système de fichiers utilisateurs sauf certains d'entre eux en utilisant une configuration du style :
-UserDir disabled +vous pouvez utiliser une sectionUserDir disabled UserDir enabled rbowen krietz- - +Vous trouverez d'autres exemples dans la documentation de
@@ -170,12 +175,11 @@ UserDir enabled rbowen krietzUserDir.<Directory>pour activer CGI dans un sous-répertoire particulier d'un répertoire home utilisateur. -<Directory "/home/*/public_html/cgi-bin/"> - Options ExecCGI - SetHandler cgi-script +<Directory "/home/*/public_html/cgi-bin/"> +Options ExecCGI +SetHandler cgi-script </Directory>- - +Avec la configuration ci-dessus, et en supposant que
-UserDirest défini àpublic_html, un programme CGIexemple.cgipourra être chargé depuis ce diff --git a/docs/manual/howto/public_html.xml b/docs/manual/howto/public_html.xml index 16d05ce1030..82ed2de686f 100644 --- a/docs/manual/howto/public_html.xml +++ b/docs/manual/howto/public_html.xml @@ -33,17 +33,25 @@ out of the home directory of the user "username", out of the subdirectory specified by theUserDir directive.Note that, by default, access to these directories is not +
By default, access to these directories is not enabled. You can enable access when using
-UserDir by uncommenting the line:- #Include conf/extra/httpd-userdir.conf - ++ +#Include conf/extra/httpd-userdir.conf + +in the default config file
+ +conf/httpd.conf, and adapting thehttpd-userdir.conffile as necessary, or by including the appropriate directives in aDirectory block within the main config file.Third-party distributions of httpd (from your OS vendor or + package manager) often place the mod_userdir + configuration in a separate file, and may enable it by default. + Check your distribution's documentation for specifics. The examples + in this document assume a default source build of httpd.Mapping URLs to the Filesystem @@ -73,9 +81,11 @@ assumed to be a directory path relative to the home directory of the specified user. Given this configuration: -+ ++ UserDir public_html - +the URL
-http://example.com/~rbowen/file.htmlwill be translated to the file path @@ -85,9 +95,11 @@ UserDir public_html constructed using that path, plus the username specified. Given this configuration:+ ++ UserDir /var/html - +the URL
@@ -96,9 +108,11 @@ UserDir /var/html in which the asterisk is replaced with the username. Given this configuration: -http://example.com/~rbowen/file.htmlwill be translated to the file path/var/html/rbowen/file.html+ ++ UserDir /var/www/*/docs - +the URL
http://example.com/~rbowen/file.htmlwill be translated to the file path @@ -106,15 +120,17 @@ UserDir /var/www/*/docsMultiple directories or directory paths can also be set.
-+ + -+ UserDir public_html /var/html - +For the URL
+http://example.com/~rbowen/file.html, - Apache will search for~rbowen. If it isn't found, - Apache will search forrbowenin/var/html. If - found, the above URL will then be translated to the file path -/var/html/rbowen/file.htmlThe arguments are considered in the order they appear. + For the URL
@@ -123,9 +139,11 @@ UserDir public_html /var/htmlhttp://example.com/~rbowen/file.html, + httpd will search for~rbowen. If it isn't found, + httpd will then search forrbowenin/var/html. + The file will be served from whichever location is found first.The
-UserDir directive can be used to redirect user directory requests to external URLs.+ ++ UserDir http://example.org/users/*/ - +The above example will redirect a request for
http://example.com/~bob/abc.htmlto @@ -139,19 +157,23 @@ UserDir http://example.org/users/*/Using the syntax shown in the UserDir documentation, you can restrict what users are permitted to use this functionality:
-+ ++ UserDir disabled root jro fish - +The configuration above will enable the feature for all users except for those listed in the
-disabledstatement. You can, likewise, disable the feature for all but a few users by using a configuration like the following:+ ++ UserDir disabled UserDir enabled rbowen krietz - +See
@@ -161,17 +183,19 @@ UserDir enabled rbowen krietzUserDir documentation for additional examples.@@ -124,7 +148,11 @@ avec le système de fichiers module="mod_userdir">UserDir pour rediriger les requêtes relatives aux répertoires utilisateurs vers des URLs externes. - Enabling a cgi directory for each user -In order to give each user their own cgi-bin directory, you can use +
To give each user their own cgi-bin directory, you can use a
-Directory directive to make a particular subdirectory of a user's home directory cgi-enabled.+ ++ <Directory "/home/*/public_html/cgi-bin/"> - Options ExecCGI - SetHandler cgi-script +Options ExecCGI +SetHandler cgi-script </Directory> - +Then, presuming that
-UserDiris set topublic_html, a cgi programexample.cgi@@ -186,7 +210,7 @@ UserDir enabled rbowen krietzAllowing users to alter configuration -If you want to allows users to modify the server configuration in +
If you want to allow users to modify the server configuration in their web space, they will need to use
-.htaccessfiles to make these changes. Ensure that you have setAllowOverride to a diff --git a/docs/manual/howto/public_html.xml.es b/docs/manual/howto/public_html.xml.es index e0a374cab24..1088f3f58f0 100644 --- a/docs/manual/howto/public_html.xml.es +++ b/docs/manual/howto/public_html.xml.es @@ -1,7 +1,7 @@ - + diff --git a/docs/manual/howto/public_html.xml.fr b/docs/manual/howto/public_html.xml.fr index c871f645339..b32d9db513b 100644 --- a/docs/manual/howto/public_html.xml.fr +++ b/docs/manual/howto/public_html.xml.fr @@ -1,7 +1,7 @@ - + @@ -35,19 +35,28 @@ visiteurs de l'URLhttp://example.com/~nom_utilisateur/recevront un contenu situé dans le répertoire home de l'utilisateur "nom_utilisateur", et dans le sous-répertoire spécifié par la directiveUserDir .Notez que par défaut, l'accès à ces répertoires n'est +
Par défaut, l'accès à ces répertoires n'est pas permis. Vous pouvez en permettre l'accès à l'aide de la directive
-UserDir en décommentant la ligne :- #Include conf/extra/httpd-userdir.conf - ++ +#Include conf/extra/httpd-userdir.conf + +dans le fichier de configuration par défaut
+ +conf/httpd.conf, et en adaptant le fichierhttpd-userdir.confselon vos besoins, ou en incluant les directives appropriées dans une sectionDirectory du fichier de configuration principal.Les distributions tierces de httpd (fournies par le fabricant de votre + OS ou par le gestionnaire de paquets) placent souvent la configuration de + mod_userdir dans un fichier séparé, et peuvent l’activer + par défaut. Consultez la documentation de votre distribution pour les + spécificités. Les exemples de ce document présupposent une construction par + défaut à partir des sources de httpd.Mise en correspondance des URLs @@ -79,7 +88,11 @@ avec le système de fichiers interprété comme chemin relatif au répertoire home de l'utilisateur considéré. Par exemple, avec cette configuration :UserDir public_html ++ +UserDir public_html + +l'URL
-http://example.com/~rbowen/fichier.htmlcorrespondra au chemin fichier @@ -89,8 +102,11 @@ avec le système de fichiers sera construit en utilisant ce chemin, suivi du nom de l'utilisateur considéré. Par exemple, avec cette configuration :UserDir /var/html - ++ +UserDir /var/html + +l'URL
@@ -99,7 +115,11 @@ avec le système de fichiers remplacé par le nom de l'utilisateur dans le chemin du fichier correspondant. Par exemple, avec cette configuration : -http://example.com/~rbowen/fichier.htmlcorrespondra au chemin fichier/var/html/rbowen/fichier.htmlUserDir /var/www/*/docs ++ +UserDir /var/www/*/docs + +l'URL
http://example.com/~rbowen/fichier.htmlcorrespondra au chemin fichier @@ -108,13 +128,17 @@ avec le système de fichiersOn peut aussi définir plusieurs répertoires ou chemins de répertoires.
-UserDir public_html /var/html ++ -+UserDir public_html /var/html + +Avec l'URL
+http://example.com/~rbowen/fichier.html, - Apache va rechercher~rbowen. S'il ne le trouve pas, - Apache va rechercherrbowendans -/var/html. S'il le trouve, l'URL ci-dessus correspondra - au chemin fichier/var/html/rbowen/file.htmlLes arguments sont pris en compte selon l’ordre dans lequel ils + apparaissent. Pour l’URL
http://example.com/~rbowen/file.html, + httpd recherchera d’abord~rbowen. Si ce dernier n’est pas + trouvé, httpd chercherarbowendans/var/html. Le + fichier sera servi depuis le premier emplacement trouvé.UserDir http://example.org/users/*/ ++ +UserDir http://example.org/users/*/ + +L'exemple ci-dessus va rediriger une requête pour
-http://example.com/~bob/abc.htmlvers @@ -139,7 +167,11 @@ avec le système de fichiers vous pouvez définir quels utilisateurs sont autorisés à utiliser cette fonctionnalité :UserDir disabled root jro fish ++ +UserDir disabled root jro fish + +La configuration ci-dessus va autoriser l'utilisation de la fonctionnalité pour tous les utilisateurs, à l'exception de ceux @@ -148,11 +180,12 @@ avec le système de fichiers utilisateurs sauf certains d'entre eux en utilisant une configuration du style :
-+ ++ UserDir disabled UserDir enabled rbowen krietz - - +Vous trouverez d'autres exemples dans la documentation de
@@ -166,13 +199,14 @@ UserDir enabled rbowen krietz type="section">Directory pour activer CGI dans un sous-répertoire particulier d'un répertoire home utilisateur. -UserDir .+ ++ <Directory "/home/*/public_html/cgi-bin/"> - Options ExecCGI - SetHandler cgi-script +Options ExecCGI +SetHandler cgi-script </Directory> - - +Avec la configuration ci-dessus, et en supposant que
UserDirest défini àpublic_html, un programme CGIexemple.cgipourra être chargé depuis ce diff --git a/docs/manual/howto/public_html.xml.ja b/docs/manual/howto/public_html.xml.ja index 2dc2f64a415..2e4cacb357d 100644 --- a/docs/manual/howto/public_html.xml.ja +++ b/docs/manual/howto/public_html.xml.ja @@ -1,7 +1,7 @@ - + + + + diff --git a/docs/manual/howto/reverse_proxy.xml.fr b/docs/manual/howto/reverse_proxy.xml.fr index 4a68e858cda..4fd3db51d15 100644 --- a/docs/manual/howto/reverse_proxy.xml.fr +++ b/docs/manual/howto/reverse_proxy.xml.fr @@ -1,7 +1,7 @@ - + + + @@ -30,7 +30,10 @@Les SSI permettent d'ajouter du contenu dynamique à des documents -HTML préexistants.
+HTML préexistants sans nécessiter de cadriciel complet d’application. Ils +s’avèrent particulièrement utiles pour insérer des éléments courants — en-têtes, +pieds de page, navigation, horodatages — dans des pages qui, sans cela, seraient +statiques.Qu'est-ce que SSI ? -SSI (Server Side Includes) est constitué de directives placées dans - des pages HTML, et évaluées par le serveur au moment où les pages - sont servies. Elles vous permettent d'ajouter du contenu généré - dynamiquement à une page HTML préexistante, sans avoir à servir la - page entière via un programme CGI, ou toute autre technologie de - contenu dynamique.
- -Par exemple, vous pouvez insérer la directive suivante dans une - page HTML existante :
- -- <!--#echo var="DATE_LOCAL" --> - +Les directives SSI sont des commentaires HTML avec une syntaxe spécifique + que le module
-mod_include reconnaît et évalue avant que la + page ne soit envoyée au client. Elle sont de la forme suivante :Ainsi, lorsque la page sera servie, la directive sera évaluée et - remplacée par sa valeur :
++ ++<!--#echo var="DATE_LOCAL" --> + +Lorsque la page est servie, ce fragment est remplacé par sa valeur :
+- Tuesday, 15-Jan-2013 19:28:54 EST + Thursday, 18-Jun-2026 14:22:07 EDT -Le choix entre l'utilisation des SSI et la génération entière de - la page par un programme quelconque, est en général dicté par la - proportion de contenu statique et de contenu devant être généré - chaque fois que la page est servie. SSI est idéal pour ajouter de - petites quantités d'information, comme l'heure courante dans - l'exemple précédent. Mais si la - plus grande partie de votre page est générée au moment où elle est - servie, vous devez vous tourner vers une autre solution.
+Les directives étant intégrées dans des commentaires HTML, les + navigateurs les ignoreront si les SSI ne sont pas activées (bien qu’elles + demeurent visibles dans le code source de la page).
Configurer votre serveur pour permettre les SSI -Pour permettre l'utilisation des SSI sur votre serveur, vous - devez ajouter la directive suivante dans votre fichier -
+httpd.conf, ou dans un fichier.htaccess- :Pour activer le traitement des SSI, ajoutez la directive suivante à votre + fichier
+ +httpd.confou à un fichier.htaccess:+ + Options +Includes +Si cette option est définie, httpd va analyser les fichiers en y + recherchant des directives SSI. Comme la plupart des configurations + contiennent plusieurs directives
+ +Options qui peuvent s’outrepasser les unes les autres, + appliquez la directive d’activation au répertoire spécifique pour lequel + vous voulez activer les SSI.Vous devez aussi indiquer à httpd les fichiers qu’il doit analyser. Pour + ce faire, il existe deux approches courantes.
+ +La première consiste à indiquer une extension de nom de fichier (en + général
-.shtml) pour les pages pour lesquelles les SSI sont + activées :Cette directive indique à Apache que vous désirez permettre la - recherche de directives SSI lors de l'interprétation des fichiers. - Notez cependant que la plupart des configurations contiennent de - nombreuses directives
- -Options - qui peuvent s'écraser les unes les autres. Vous devrez probablement - appliquer ces directivesOptionsau répertoire - spécifique pour lequel vous voulez activer les SSI, afin d'être sûr - qu'elles y seront bien activées.Tout fichier ne fera cependant pas l'objet de recherche de - directives SSI. Vous devez indiquer à Apache quels fichiers seront - concernés. Vous pouvez y parvenir en indiquant une extension, comme -
+.shtml, à l'aide des directives suivantes :- AddType text/html .shtml AddOutputFilter INCLUDES .shtml +Un des désavantages de cette approche réside dans le fait que si - vous voulez ajouter des directives SSI à une page préexistante, vous - devrez changer le nom de cette page, et donc tout lien qui la - contient, de façon à ce qu'elle possède l'extension -
+.shtml, condition nécessaire pour que les directives - SSI qu'elle contient soient traitées.Cette approche a pour désavantage de nécessiter, pour ajouter des SSI à + une page existante, de renommer le fichier (et de mettre à jour tous les + liens vers ce dernier) pour utiliser l’extension
-.shtml.Une autre méthode consiste à utiliser la directive
+ +La seconde approche consiste à utiliser la directive XBitHack :+ + XBitHack on +La directive
-XBitHack indique + à httpd qu’il doit analyser tout fichier dont le bit d’exécution est + positionné. Ainsi, pour activer les SSI pour une page existante, il suffit + de rendre le fichier exécutable :La directive
XBitHack - indique à Apache qu'il doit rechercher des directivves SSI dans les - fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus - nécessaire de changer le nom du fichier pour ajouter des directives - SSI à une page préexistante ; vous devez simplement attribuer les - droits d'exécution au fichier à l'aide dechmod.- chmod +x pagename.html + - -+chmod +x pagename.html + Un bref commentaire sur ce qu'il ne faut pas faire. Certaines - personnes peuvent vous conseiller de tout simplement indiquer à - Apache de rechercher des directives SSI dans tous les fichiers -
- -.html, ce qui vous évite d'avoir à gérer les noms de - fichiers avec extension.shtml. Ils n'ont probablement - pas entendu parler de la directiveXBitHack . En effet, vous devez - garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher - des directives SSI dans chaque fichier qu'il sert, même s'il n'en - contient aucune. Ce n'est donc pas une bonne idée car les - performances peuvent en être sensiblement affectées.Bien entendu, sous Windows, il n'y a pas de bit d'exécution à - positionner, ce qui limite un peu vos choix.
- -Dans sa configuration par défaut, Apache n'envoie pas la date de - dernière modification ou les en-têtes HTTP relatifs à la taille des - contenus dans les pages SSI, car ses valeurs sont difficiles à - calculer pour les contenus dynamiques. Ceci peut induire une - impression de diminution des performances côté client, en empêchant - la mise en cache de votre document. Il existe deux méthodes pour - résoudre ce problème :
+ ++ + + Évitez de configurer httpd pour analyser tous les fichiers +
.htmlpour y trouver des directives SSI. Cela force en effet le + serveur à parcourir tous les fichiers HTML qu’il sert, même ceux qui n’ont + pas de contenu SSI, ce qui ajoute une surcharge de travail inutile. +Sous Windows, il n’y a pas de bit d’exécution ; l’approche avec la + directive
+ +XBitHack n’est donc + pas valable dans ce cas. Vous devrez alors utiliser l’approche par extension + de nom de fichier.Par défaut, httpd n’envoie pas la date de dernière modification ou les + en-têtes content-length sur les pages SSI, car ces valeurs sont difficiles à + calculer pour un contenu dynamique. Cela peut empêcher la mise en cache et + induire un ressenti de performances plus lentes. Deux approches peuvent + aider :
-
- Utilisez la configuration
- -XBitHack Full. Elle - indique à Apache de déterminer la date de dernière modification en - ne regardant que la date du fichier à l'origine de la requête, - tout en ignorant la date de modification de tout fichier inclus.- Utilisez les directives fournies par le module -
+mod_expires pour définir de manière explicite la - date d'expiration de vos fichiers, laissant par la-même - aux navigateurs et aux mandataires le soin de déterminer s'il est - opportun ou non de les mettre en cache.- Utilisez la directive
+ +XBitHack Fullqui indique à httpd + qu’il doit déterminer la date de dernière modification à partir du fichier + initialement demandé, tout en ignorant les dates de dernière modification + des fichiers inclus.- Utilisez le module
+mod_expires pour définir un moment + d’expiration explicite, indiquant ainsi aux navigateurs et aux mandataires + que le contenu peut être mis en cache.+ Directives SSI de base -Les directives SSI adoptent la syntaxe suivante :
+Les directives SSI utilisent la syntaxe suivante :
- <!--#fonction attribut=valeur attribut=valeur ... --> + -+<!--#function attribute=value attribute=value ... --> + Le format d'une directive SSI étant similaire à celui d'un - commentaire HTML, si vous n'avez pas activé correctement SSI, le - navigateur l'ignorera, mais elle sera encore visible dans le source - HTML. Si SSI est correctement configuré, la directive sera remplacée - par ses résultats.
- -"fonction" peut prendre de nombreuses formes, et nous décrirons - plus précisément la plupart d'entre eux dans la prochaine version de - ce document. Pour le moment, voici quelques exemples de ce que vous - pouvez faire avec SSI.
+Si les SSI sont correctement configurées, la directive sera remplacée par + sa sortie. Dans le cas contraire, elle demeurera en tant que commentaire + HTML — invisible à l’utilisateur final, mais présente dans le code source de + la page.
La date courante - <!--#echo var="DATE_LOCAL" --> + -+<!--#echo var="DATE_LOCAL" --> + La fonction
+echopermet d'afficher la valeur d'une - variable. Il existe un grand nombre de variables standards, y - compris l'ensemble des variables d'environnement disponibles pour - les programmes CGI. De plus, vous pouvez définir vos propres - variables à l'aide de la fonctionset.La fonction
-echoa pour sortie la valeur d’une variable. Les + variables standard incluent le jeu complet de variables d’environnement + disponibles pour les programmes CGI, ainsi que les variables que vous pouvez + définir avecset.Si vous n'aimez pas le format sous lequel la date s'affiche, vous - pouvez utiliser la fonction
+configavec un attribut -timefmt, pour le modifier.Pour personnaliser le format de la date, utilisez la fonction +
configavec l’attributtimefmt:- <!--#config timefmt="%A %B %d, %Y" -->
- Today is <!--#echo var="DATE_LOCAL" --> ++<!--#config timefmt="%A %B %d, %Y" -->
+Today is <!--#echo var="DATE_LOCAL" --> +Date de modification du fichier - Dernière modification du document <!--#flastmod file="index.html" --> + +Dernière modification du document <!--#flastmod file="index.html" --> + Le format peut là aussi être modifié à l'aide de l'attribut @@ -236,12 +229,13 @@ AddOutputFilter INCLUDES .shtml
@@ -250,246 +244,216 @@ AddOutputFilter INCLUDES .shtml Inclusion des résultats d'un programme CGI -C'est le cas le plus courant d'utilisation des SSI - afficher les - résultats d'un programme CGI, comme l'universellement adoré - "compteur d'accès".
+Les SSI permettent d’inclure directement la sortie d’un programme CGI + dans la page :
- <!--#include virtual="/cgi-bin/counter.pl" --> + +<!--#include virtual="/cgi-bin/counter.pl" --> + Exemples additionnels -Vous trouverez dans ce qui suit quelques exemples spécifiques de - ce que vous pouvez faire de vos documents HTML avec SSI.
+Vous trouverez dans les exemples pratiques suivants des cas d’utilisation + courants des SSI.
Quand ce document a-t-il été modifié ? -Nous avons mentionné plus haut que vous pouviez utiliser SSI pour - informer l'utilisateur de la date de dernière modification du - document. Cependant, la méthode pour y parvenir n'a pas été vraiment - abordée. Placé dans votre document HTML, le code suivant va insérer - un repère de temps dans votre page. Bien entendu, SSI devra avoir - été correctement activé, comme décrit plus haut.
-- <!--#config timefmt="%A %B %d, %Y" --> +
- Dernière modification du fichier <!--#flastmod file="ssi.shtml" --> -Une des utilisations courantes des SSI est l’affichage d’un horodatage + « date de dernière modification » sur chaque page. Le code suivant utilise + la variable
-LAST_MODIFIED; vous pouvez donc coller le même + extrait dans tout fichier sans modifier son nom :Bien entendu, vous devez remplacer
ssi.shtmlpar le - nom du fichier auquel vous faites référence. Ceci ne conviendra pas - si vous recherchez un morceau de code générique que vous pourrez - insérer dans tout fichier ; dans ce cas, il est préférable - d'utiliser la variableLAST_MODIFIED:- <!--#config timefmt="%D" --> -
- This file last modified <!--#echo var="LAST_MODIFIED" --> ++<!--#config timefmt="%D" --> +
+Date de dernière modification de ce fichier <!--#echo var="LAST_MODIFIED" --> +Pour plus de détails sur le format
+timefmt, tapez -strftimedans votre moteur de recherche préferé. La - syntaxe est identique.Pour des détails à propos des chaînes de formatage de +
timefmt, voir la documentation destrftimedans le + manuel de référence de la bibliothèque C de votre système.- +Que puis-je configurer d'autre ? +Autres options de configuration -En plus du format de date, vous pouvez utiliser l'élément -
+configpour configurer deux autres choses.En plus de
-timefmt, la fonctionconfigaccepte + deux autres attributs.En général, lorsque quelque chose se passe mal avec votre - directive SSI, vous recevez le message :
+L’attribut
errmsgmodifie le message d’erreur affiché + lorsqu’une directive SSI échoue. Le message par défaut est :- [an error occurred while processing this directive] +[an error occurred while processing this directive] -Pour modifier ce message, vous pouvez utiliser l'attribut -
+errmsgavec la fonctionconfig:Vous pouvez le remplacer par un contenu plus adapté à votre site :
- <!--#config errmsg="[Il semblerait que vous ne sachiez pas - utiliser les SSI]" --> + -+<!--#config errmsg="[Content unavailable]" --> + Il est cependant probable que les utilisateurs finaux ne voient - jamais ce message, car vous aurez résolu tous les problèmes issus de - vos directives SSI avant que votre site ne soit mis en production. - (N'est-ce pas ?)
- -Vous pouvez aussi modifier le format sous lequel les tailles de - fichiers sont affichées à l'aide de l'attribut
-sizefmt. - Vous pouvez spécifierbytespour un affichage en - octets, ouabbrevpour un affichage plus concis en Ko - ou Mo, selon le cas.L’attribut
+sizefmtcontrôle la manière dont les tailles de + fichier sont spécifiées :bytespour un décompte en octets ou +abbrevpour une forme abrégée en Ko ou Mo.- Exécution de commandes -Voici autre chose que vous pouvez faire avec la fonction -
-exec. Vous pouvez vraiment faire exécuter une commande - par SSI en utilisant le shell (/bin/sh, pour être plus - précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce - qui suit vous permet d'afficher le contenu d'un répertoire.- <pre> +
- <!--#exec cmd="ls" -->
- </pre> -La fonction
-execpermet d’exécuter une commande du shell et + d’inclure sa sortie dans la page. Sur les systèmes de style Unix, la + commande est exécutée via/bin/sh, et sous Windows via + l’interpréteur de commande.ou, sous Windows
- <pre> +
- <!--#exec cmd="dir" -->
- </pre> ++<pre> +<!--#exec cmd="ls" --> +</pre> + + + La fonctionnalité
execconstitue un risque de sécurité + significatif. En effet, elle exécute des commandes arbitraires avec les + privilèges du processus du serveur web. Si les utilisateurs peuvent éditer + du contenu sur votre site, assurez-vous que cette fonctionnalité soit + désactivée en spécifiantIncludesNOEXECau lieu de +Includesdans la définition de la directiveOptions . +Vous noterez probablement l'étrange formatage provoqué par cette - directive sous Windows, car la sortie de
- -dircontient - la chaîne de caractères "<dir>", ce qui trompe le - navigateur.Notez que cette fonctionnalité est très dangereuse, car elle va - permettre d'exécuter tout code associé à l'élément -
-exec. Si vous êtes dans la situation où les - utilisateurs peuvent éditer le contenu de vos pages web, dans le cas - d'un "livre d'or" par exemple, assurez-vous de désactiver cette - fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver - la fonctionnalitéexecà l'aide de l'argument -IncludesNOEXECde la directive -Options.Techniques SSI avancées -Outre l'affichage de contenu, les SSI d'Apache vous permettent de - définir des variables, et de les utiliser dans des comparaisons et - des conditions.
+Au-delà de la simple inclusion de contenu, les SSI prennent en charge les + variables et les expressions conditionnelles, rendant possible la génération + de contenus différents en fonction du contexte de la requête.
Définition de variables -Avec l'élément
+set, vous pouvez définir des - variables pour un usage ultérieur. Comme nous en aurons besoin plus - loin, nous allons en parler tout de suite. La syntaxe se présente - comme suit :La directive
+setpermet de définir des variables à utiliser + plus tard dans la page :- <!--#set var="name" value="Rich" --> + -+<!--#set var="name" value="Rich" --> + Pour affecter une valeur à vos variables, en plus de la - définition littérale de l'exemple ci-dessus, vous pouvez utiliser - une autre variable, y compris les variables d'environnement, ou les variables - décrites plus haut (comme
+LAST_MODIFIEDpar exemple). - Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous - devez utiliser le symbole dollar ($) devant le nom de la - variable.Les variables peuvent référencer d’autres variables (y compris des variables d’environnement) en utilisant le signe dollar + (
-$) comme préfixe :<!--#set var="modified" value="$LAST_MODIFIED" --> - ++ + ++<!--#set var="modified" value="$LAST_MODIFIED" --> + +Pour inclure un signe dollar littéral, protégez-le avec une + contre-oblique :
-Pour insérer un caractère $ dans la valeur de votre variable, - vous devez l'échapper à l'aide d'un backslash.
- <!--#set var="cost" value="\$100" --> + -+<!--#set var="cost" value="\$100" --> + Enfin, si vous voulez insérer une variable dans une chaîne, et - s'il y a une chance pour que le nom de la variable se confonde avec - le reste de la chaîne, vous pouvez l'entourer d'accolades pour - eviter toute confusion (Il est difficile de trouver un bon exemple - pour illustrer ceci, mais j'espère que vous comprendrez).
+Lorsqu'un nom de variable risque d'être ambigu au sein d'une chaîne plus + longue, utilisez des accolades pour le délimiter :
+- <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> + +<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> + Expressions conditionnelles -Maintenent que nous avons des variables, et que nous pouvons - définir et comparer leurs valeurs, nous sommes à même de les - utiliser dans des expressions conditionnelles. Ceci confère à SSI le - statut de petit langage de programmation. -
- -mod_include fournit une structureif, -elif,else,endifpour la - construction d'expressions conditionnelles, ce qui vous permet de - générer plusieurs pages logiques à partir d'une seule vraie - page.La structure de l'expression conditionnelle est :
++ +
mod_include fournit les élémentsif, +elif,elseetendifpermettant de + construire une logique conditionnelle. Cette fonctionnalité permet de + générer des sorties différentes à partir d’une seule page physique.La structure est :
+- <!--#if expr="condition" --> -
- <!--#elif expr="condition" -->
- <!--#else -->
- <!--#endif --> ++<!--#if expr="test_condition" -->
+<!--#elif expr="test_condition" -->
+<!--#else -->
+<!--#endif --> +Une condition peut revêtir la forme de toute comparaison - logique - soit une comparaison de valeurs avec une autre, soit une - vérification de la "vérité" d'une valeur particulière (Une chaîne - donnée est vraie si elle n'est pas vide). Pour une liste exhaustive - des opérateurs de comparaison disponibles, voir la documentation du - module
+mod_include .Une test_condition peut comparer des valeurs ou vérifier si une + variable n’est pas vide. Voir la documentation de +
-mod_include pour la liste complète des opérateurs de + comparaison.Par exemple, spour insérer l'heure du jour dans votre page web, - vous pouvez ajouter ces lignes dans la page HTML :
+Par exemple, pour afficher des salutations différentes en fonction de + l’heure du jour :
-- Good - <!--#if expr="%{TIME_HOUR} <12" --> - -
- morning!
- <!--#else -->
- afternoon!
- <!--#endif -->
-Toute autre variable (que vous avez définie, ou une variable - d'environnement normale) peut être utilisée dans les expressions - conditionnelles. Voir le document Expressions - rationnelles dans le serveur HTTP Apache pour plus de détails à - propos du fonctionnement du moteur d'évaluation des expressions - rationnelles.
- -Associée à la possibilité avec Apache de définir - des variables d'environnement à l'aide de directives -
+SetEnvIf, ainsi que d'autres directives en rapport, - cette fonctionnalité vous permet d'ajouter une grande variété - de contenus dynamiques côté serveur sans avoir à concevoir une - application web de A à Z.+ + ++Good +<!--#if expr="%{TIME_HOUR} <12" --> +
+morning!
+<!--#else -->
+afternoon!
+<!--#endif -->
+Toute variable — définie par l’utilisateur ou issue de l’environnement + — peut être utilisée dans les expressions conditionnelles. Voir Les expressions dans le Serveur HTTP Apache pour des + détails complets à propos du moteur d’évaluation des expressions.
+ +Combinées avec la capacité de httpd à définir des variables + d’environnement en utilisant
SetEnvIf et les directives apparentées, + les SSI conditionnelles peuvent traiter une grande variété de scénarios de + contenu dynamique sans nécessiter de cadriciel complet d’applications.diff --git a/docs/manual/howto/ssi.xml.ja b/docs/manual/howto/ssi.xml.ja index 5cfe9bd574b..a7f22c805d5 100644 --- a/docs/manual/howto/ssi.xml.ja +++ b/docs/manual/howto/ssi.xml.ja @@ -1,7 +1,7 @@ - + + + +``` + +## Generating PNGs from SVGs + +Use `rsvg-convert` (from `librsvg`): + +```bash +# Install (macOS): +brew install librsvg + +# Install (Fedora/RHEL/CentOS): +dnf install librsvg2-tools + +# Install (Debian/Ubuntu): +apt-get install librsvg2-bin + +# Convert at 1x (matching SVG viewBox dimensions): +rsvg-convert -o rewrite_l_flag_looping.png rewrite_l_flag_looping.svg + +# Or specify explicit dimensions: +rsvg-convert -w 520 -h 720 -o rewrite_l_flag_looping.png rewrite_l_flag_looping.svg +``` + +Existing PNGs in this directory are at 1x scale (matching their SVG +viewBox width/height). Keep PNGs at 1x for consistency with the rest +of the documentation build. + +## General Conventions + +- Diamonds for decisions, rounded rectangles for actions, pill shapes + for start/end terminals. +- Yes/No labels on decision branches (9px, gray). +- Phase boxes group related steps that occur in the same processing context. +- Dashed lines indicate loop-back paths or optional flows. +- Titles centered at the top of the SVG. +- Typical viewBox widths: 440–650px. Heights: 360–750px. diff --git a/docs/manual/images/rewrite_l_flag_looping.png b/docs/manual/images/rewrite_l_flag_looping.png new file mode 100644 index 00000000000..47aabf8b63c Binary files /dev/null and b/docs/manual/images/rewrite_l_flag_looping.png differ diff --git a/docs/manual/images/rewrite_l_flag_looping.svg b/docs/manual/images/rewrite_l_flag_looping.svg new file mode 100644 index 00000000000..bee5740c4f6 --- /dev/null +++ b/docs/manual/images/rewrite_l_flag_looping.svg @@ -0,0 +1,153 @@ + + diff --git a/docs/manual/images/rewrite_module_order.png b/docs/manual/images/rewrite_module_order.png new file mode 100644 index 00000000000..fdde07ddc13 Binary files /dev/null and b/docs/manual/images/rewrite_module_order.png differ diff --git a/docs/manual/images/rewrite_module_order.svg b/docs/manual/images/rewrite_module_order.svg new file mode 100644 index 00000000000..bca2266c9ab --- /dev/null +++ b/docs/manual/images/rewrite_module_order.svg @@ -0,0 +1,110 @@ + + diff --git a/docs/manual/images/rewrite_path_stripping.png b/docs/manual/images/rewrite_path_stripping.png new file mode 100644 index 00000000000..cfc901b09ab Binary files /dev/null and b/docs/manual/images/rewrite_path_stripping.png differ diff --git a/docs/manual/images/rewrite_path_stripping.svg b/docs/manual/images/rewrite_path_stripping.svg new file mode 100644 index 00000000000..12d40924074 --- /dev/null +++ b/docs/manual/images/rewrite_path_stripping.svg @@ -0,0 +1,142 @@ + + diff --git a/docs/manual/images/rewrite_simplified_overview.png b/docs/manual/images/rewrite_simplified_overview.png new file mode 100644 index 00000000000..14bc1da77d8 Binary files /dev/null and b/docs/manual/images/rewrite_simplified_overview.png differ diff --git a/docs/manual/images/rewrite_simplified_overview.svg b/docs/manual/images/rewrite_simplified_overview.svg new file mode 100644 index 00000000000..e960038caf4 --- /dev/null +++ b/docs/manual/images/rewrite_simplified_overview.svg @@ -0,0 +1,113 @@ + + diff --git a/docs/manual/install.html.en.utf8 b/docs/manual/install.html.en.utf8 index f700528330d..9b27e9d72a0 100644 --- a/docs/manual/install.html.en.utf8 +++ b/docs/manual/install.html.en.utf8 @@ -34,15 +34,16 @@ - Conclusion -SSI ne remplace certainement pas CGI, ou d'autres technologies - utilisées pour la génération de pages web dynamiques. Mais c'est une - bonne méthode pour ajouter des petits contenus dynamiques à vos - pages, sans devoir fournir un gros effort supplémentaire.
+Pour les sites principalement statiques mais nécessitant quelques touches + dynamiques, les SSI évitent la surcharge de travail induite par la + configuration d’une pile complète d’applications. Elles ne requièrent que +
mod_include et quelques lignes de configuration pour + fonctionner.This document covers compilation and installation of the Apache HTTP Server - on Unix and Unix-like systems only. For compiling and - installation on Windows, see Using Apache HTTP Server with Microsoft - Windows and Compiling Apache for Microsoft Windows. - For other platforms, see the platform documentation.
+The Apache HTTP Server is released as source code. This document + covers building and installing the server from source on Unix and + Unix-like systems. For Windows, see Using Apache HTTP Server with Microsoft + Windows and Compiling Apache httpd for Microsoft + Windows. For other platforms, see the platform documentation.
-Apache httpd uses
+libtoolandautoconf- to create a build environment that looks like many other Open Source - projects.If you install httpd from a distribution package (RPM, DEB, etc.), + configuration layout and defaults may differ from what is described here. + See third-party packages below, and consult your + distribution's documentation for platform-specific details.
If you are upgrading from one minor version to the next (for example, 2.4.66 to 2.4.67), please skip down to the upgrading section.
@@ -66,45 +67,6 @@Overview for the impatient ¶
-
sudo dnf install httpd - -# Start service -sudo systemctl start httpd - -# Stop service -sudo systemctl stop httpd - -# Restart service -sudo systemctl restart httpd- - -
sudo apt install apache2 - -# Start service -sudo systemctl start apache2 - -# Stop service -sudo systemctl stop apache2 - -# Restart service -sudo systemctl restart apache2- - -
| Téléchargement | -Téléchargez la dernière version depuis http://httpd.apache.org/download.cgi - | +Téléchargez la dernière version depuis https://httpd.apache.org/download.cgi + | |
| Extraction | -$ gzip -d httpd-NN.tar.gz |
+ $ tar xzf httpd-NN.tar.gz +$ cd httpd-NN+ |
|
| Description: | Fonctionnalités de base du serveur HTTP Apache toujours disponibles |
|---|---|
| Statut: | Noyau httpd |
Options.
- Bien que la liste des options disponibles dans les fichiers
- .htaccess puisse être limitée par cette directive, tant qu'un
- directive Options est
- autorisée, toute autre option héritée peut être désactivée en
- utilisant la syntaxe non-relative. En d'autres termes, ce
- mécanisme ne peut pas forcer une option spécifique à rester
- activée tout en permettant à toute autre option d'être
- activée.
-
Cette restriction ne contrôle que les options qu’un fichier
+ .htaccess peut activer. Elle n’empêche pas la
+ désactivation des options héritées.
Lorsqu’une directive Options dans
+ un fichier .htaccess utilise une syntaxe absolue (sans
+ préfixe + ou -), elle remplace la
+ totalité du jeu d’options héritées. Toute option auparavant active qui
+ n’est pas listée est implicitement désactivée—il en est de même pour
+ les options qui ne sont pas dans la liste AllowOverride des
+ options permises.
Par exemple, si la configuration définit :
+Options Indexes FollowSymLinks ExecCGI +AllowOverride Options=Indexes+ +
et si un fichier .htaccess contient :
Options Indexes+ +
les options FollowSymLinks et ExecCGI seront
+ implicitement désactivée pour le répertoire concerné, même si la ligne
+ AllowOverride ne fait que permettre la définition de l’option
+ Indexes.
En bref, ce mécanisme ne peut pas forcer une option spécifique à rester + définie tout en permettant la définition de toutes les autres.
+AllowOverride Options=Indexes,MultiViewsdiff --git a/docs/manual/mod/core.xml.fr b/docs/manual/mod/core.xml.fr index d9a67b5d7d4..a6cbd45769a 100644 --- a/docs/manual/mod/core.xml.fr +++ b/docs/manual/mod/core.xml.fr @@ -1,7 +1,7 @@ - + @@ -517,16 +517,36 @@ autorisés à transiter dans les URLs tels quels pouvant être définies à l'aide de la directive
Bien que la liste des options disponibles dans les fichiers
- .htaccess puisse être limitée par cette directive, tant qu'un
- directive
Cette restriction ne contrôle que les options qu’un fichier
+ .htaccess peut activer. Elle n’empêche pas la
+ désactivation des options héritées.
Lorsqu’une directive .htaccess utilise une syntaxe absolue (sans
+ préfixe + ou -), elle remplace la
+ totalité du jeu d’options héritées. Toute option auparavant active qui
+ n’est pas listée est implicitement désactivée—il en est de même pour
+ les options qui ne sont pas dans la liste AllowOverride des
+ options permises.
Par exemple, si la configuration définit :
+et si un fichier .htaccess contient :
les options FollowSymLinks et ExecCGI seront
+ implicitement désactivée pour le répertoire concerné, même si la ligne
+ AllowOverride ne fait que permettre la définition de l’option
+ Indexes.
En bref, ce mécanisme ne peut pas forcer une option spécifique à rester + définie tout en permettant la définition de toutes les autres.
+--with-mpm=event to the configure
script's arguments when building the httpd.
+
+ When built as a DSO module, it can be loaded with:
+ +LoadModule mpm_event_module modules/mod_mpm_event.so+ +
configure lorsque vous compilez le programme
httpd.
+ Lorsque ce module est construit en tant que module DSO, il peut être +chargé à l’aide de la commande :
+ +LoadModule mpm_event_module modules/mod_mpm_event.so+ +
workerCe module MPM a été conçu à l'origine pour résoudre le "problème keep
alive" de HTTP. Lorsqu'un client a effectué une première requête, il peut
- garder la connexion ouverte et envoyer les requêtes suivante en utilisant le
+ garder la connexion ouverte et envoyer les requêtes suivantes en utilisant le
même socket, ce qui diminue considérablement la charge qui aurait été
induite par la création de nouvelles connexions TCP. Cependant, le
fonctionnement du serveur HTTP Apache impose de réserver un couple processus
diff --git a/docs/manual/mod/event.xml b/docs/manual/mod/event.xml
index 36f68f529dd..9211f8f259d 100644
--- a/docs/manual/mod/event.xml
+++ b/docs/manual/mod/event.xml
@@ -39,8 +39,16 @@ of consuming threads only for connections with active processing
--with-mpm=event to the configure
script's arguments when building the httpd .
+
+ When built as a DSO module, it can be loaded with:
+
+
+LoadModule mpm_event_module modules/mod_mpm_event.so
+
+
+Multi-Processing Modules (MPMs)
The worker MPM
Relationship with the Worker MPM
diff --git a/docs/manual/mod/event.xml.es b/docs/manual/mod/event.xml.es
index 64ac954b26d..49984ecbb5a 100644
--- a/docs/manual/mod/event.xml.es
+++ b/docs/manual/mod/event.xml.es
@@ -1,7 +1,7 @@
-
+
+
@@ -43,8 +43,15 @@ mobiliser des threads que pour les connexions en cours de traitementconfigure lorsque vous compilez le programme
httpd .
-
+ Lorsque ce module est construit en tant que module DSO, il peut être
+chargé à l’aide de la commande :
+
+LoadModule mpm_event_module modules/mod_mpm_event.so
+
+
+
+Modules multi-processus (MPMs)
Le MPM worker
Relations avec le MPM Worker
@@ -66,7 +73,7 @@ propose le MPM worker , avec l'unique addition de la directive
Ce module MPM a été conçu à l'origine pour résoudre le "problème keep
alive" de HTTP. Lorsqu'un client a effectué une première requête, il peut
- garder la connexion ouverte et envoyer les requêtes suivante en utilisant le
+ garder la connexion ouverte et envoyer les requêtes suivantes en utilisant le
même socket, ce qui diminue considérablement la charge qui aurait été
induite par la création de nouvelles connexions TCP. Cependant, le
fonctionnement du serveur HTTP Apache impose de réserver un couple processus
diff --git a/docs/manual/mod/index.html.fr.utf8 b/docs/manual/mod/index.html.fr.utf8
index aefa8e52a0b..a37b269f3a2 100644
--- a/docs/manual/mod/index.html.fr.utf8
+++ b/docs/manual/mod/index.html.fr.utf8
@@ -56,8 +56,9 @@ disponibles
modules multi-processus (MPM)
- event
- Une variante du MPM
worker conçue pour ne
mobiliser des threads que pour les connexions en cours de traitement
-- motorz
- A lean, fast, self-contained event-driven Multi-Processing Module
-built on the APR pollset and thread pool especially suited as a reverse proxy
+- motorz
- Un MPM (Multi-Processing Module) événementiel léger, rapide et
+autonome basé sur l'ensemble de requêtes et le pool de threads APR,
+particulièrement adapté comme mandataire inverse
- mpm_netware
- Module multi-processus implémentant un serveur web basé
exclusivement sur les threads et optimisé pour Novell
NetWare
@@ -226,8 +227,9 @@ utilisateurs.
mod_proxy
- mod_proxy_balancer
- Extension de
mod_proxy pour le support de
la répartition de charge
-- mod_proxy_beacon
- Dynamic Balancer membership where backends announce themselves
-to the reverse proxy over unicast UDP datagrams
+- mod_proxy_beacon
- Inscription dynamique comme membre d’un répartiteur de charge où
+les serveurs dorsaux s’annoncent eux-mêmes au mandataire inverse à l’aide de
+datagrammes UDP unicast
- mod_proxy_connect
- Extension de
mod_proxy pour le traitement
des requêtes CONNECT
- mod_proxy_express
- Extension à
mod_proxy pour le mandatement
diff --git a/docs/manual/mod/mod_access_compat.xml b/docs/manual/mod/mod_access_compat.xml
index f68ac36ad3c..6b802845fcc 100644
--- a/docs/manual/mod/mod_access_compat.xml
+++ b/docs/manual/mod/mod_access_compat.xml
@@ -25,7 +25,7 @@
mod_access_compat
Group authorizations based on host (name or IP
address)
-Extension
+Deprecated
mod_access_compat.c
access_compat_module
Available in Apache HTTP Server 2.3 as a compatibility module with
diff --git a/docs/manual/mod/mod_allowhandlers.html.fr.utf8 b/docs/manual/mod/mod_allowhandlers.html.fr.utf8
index bad8f1e893e..e3c4c0908cb 100644
--- a/docs/manual/mod/mod_allowhandlers.html.fr.utf8
+++ b/docs/manual/mod/mod_allowhandlers.html.fr.utf8
@@ -30,8 +30,6 @@
es |
fr
-Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.
Description: Facilite la définition de la liste des gestionnaires HTTP
qui peuvent être utilisés pour le serveur
Statut: Expérimental
diff --git a/docs/manual/mod/mod_allowhandlers.xml.meta b/docs/manual/mod/mod_allowhandlers.xml.meta
index 42f4593ab1c..c9b669a2d8b 100644
--- a/docs/manual/mod/mod_allowhandlers.xml.meta
+++ b/docs/manual/mod/mod_allowhandlers.xml.meta
@@ -9,6 +9,6 @@
en
es
- fr
+ fr
diff --git a/docs/manual/mod/mod_auth_digest.html.fr.utf8 b/docs/manual/mod/mod_auth_digest.html.fr.utf8
index f19fbd5c20d..b3d32ccb9e9 100644
--- a/docs/manual/mod/mod_auth_digest.html.fr.utf8
+++ b/docs/manual/mod/mod_auth_digest.html.fr.utf8
@@ -30,8 +30,6 @@
fr |
ko
-Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.
Description: Authentification utilisateur utilisant les condensés
MD5
Statut: Extension
@@ -176,18 +174,33 @@ concernant l'authentification à base de condensés
Directive AuthDigestNcCheck ¶
-Description: Active ou désactive la vérification du nombre d'envois du
-nombre à valeur unique (nonce) par le serveur
+Description: Active ou désactive la vérification du compteur d'envois du
+nombre à valeur unique (nonce) par le client
Syntaxe: AuthDigestNcCheck On|Off
Défaut: AuthDigestNcCheck Off
-Contexte: configuration globale
+Contexte: configuration globale, serveur virtuel, répertoire, .htaccess
+Surcharges autorisées: AuthConfig
Statut: Extension
Module: mod_auth_digest
-
- Non encore implémenté.
-
-
+ La directive AuthDigestNcCheck permet d'activer ou de désactiver
+ la vérification du compteur d'envois du nombre à valeur unique (nonce)
+ par le client. Le compteur d'envois est un compteur séquentiel que le client
+ incrémente à chaque requête en utilisant le même nombre à valeur unique.
+ Cette vérification permet de détecter les attaques par rejeu.
+
+ Cette fonctionnalité nécessite la prise en charge de la mémoire partagée
+ sur la plateforme. Si cette directive est définie à On alors
+ que la mémoire partagée n’est pas disponible, le serveur renverra une erreur
+ au démarrage.
+
+ Bien qu’il soit recommandé de le faire du point de vue de la sécurité,
+ activer cette directive a des implications en matière de performance :
+ toutes les requêtes comportant un en-tête
+ Authorization doivent être sérialisées au sein d’une section
+ critique pour comparer de manière sure les valeurs du compteur d’envois du
+ nombre à valeur unique. Sur les serveurs à fort trafic, cela peut ne pas être
+ négligeable.
diff --git a/docs/manual/mod/mod_auth_digest.xml.meta b/docs/manual/mod/mod_auth_digest.xml.meta
index 5e68b12cb21..7583c0e005d 100644
--- a/docs/manual/mod/mod_auth_digest.xml.meta
+++ b/docs/manual/mod/mod_auth_digest.xml.meta
@@ -8,7 +8,7 @@
en
- fr
+ fr
ko
diff --git a/docs/manual/mod/mod_brotli.html.fr.utf8 b/docs/manual/mod/mod_brotli.html.fr.utf8
index c9e23a22e7a..39a90a7e73f 100644
--- a/docs/manual/mod/mod_brotli.html.fr.utf8
+++ b/docs/manual/mod/mod_brotli.html.fr.utf8
@@ -29,8 +29,6 @@
-Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.
Description: Compression du contenu via Brotli avant sa livraison au client
Statut: Extension
Identificateur de Module: brotli_module
@@ -98,7 +96,7 @@ SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli
Si vous voulez restreindre la compression à certains types MIME
particuliers, vous pouvez utiliser la directive AddOutputFilterByType. Dans l'exemple
suivant, l'activation de la compression est restreinte aux fichiers html
- de la documentation d'Apache :
+ de la documentation d'Apache httpd :
<Directory "/your-server-root/manual">
AddOutputFilterByType BROTLI_COMPRESS text/html
@@ -228,9 +226,18 @@ compression
Module: mod_brotli
La directive BrotliCompressionMaxInputBlock permet
- de spécifier la taille maximale du bloc de données en entrée entre 16 et 24,
- sachant que plus cette taille sera grande, plus grande sera la quantité de
- mémoire consommée.
+ de spécifier la taille maximale du bloc de données en entrée sous la forme
+ de 2 élevé à une puissance égale à value. Cette dernière doit
+ être comprise entre 16 et 24, ce qui représente des blocs de 64 Ko à 16 Mo.
+ Des blocs de taille plus grande peuvent améliorer la compression, mais
+ nécessitent davantage de mémoire. Lorsque cette directive n’est pas définie,
+ la taille de bloc est automatiquement calculée en fonction de la valeur de
+ qualité définie.
+
+
+ Blocs en entrée de taille définie à 1 Mo
# 2^20 = blocs de 1 Mo
+BrotliCompressionMaxInputBlock 20
+
@@ -246,9 +253,19 @@ compression
La directive BrotliCompressionQuality permet de
spécifier la qualité de la compression (une valeur entre 0 et
11). Les valeurs les plus hautes correspondent à une compression de
- meilleure qualité mais plus lente.
+ meilleure qualité mais plus lente. La valeur par défaut 5 est un bon
+ compromis pour du contenu dynamique.
+ Compression rapide pour du contenu dynamique
# La valeur de qualité 4 est à peu près équivalente à gzip niveau 6
+BrotliCompressionQuality 4
+
+
+ Compression maximale pour les ressources statiques
# Meilleur taux de compression mais très lent — ne convient qu’à la mise en
+# cache
+BrotliCompressionQuality 11
+
+
Directive BrotliCompressionWindow ¶
@@ -262,8 +279,20 @@ compression
La directive BrotliCompressionWindow permet de
spécifier la taille de la fenêtre de compression glissante brotli (une
- valeur comprise entre 10 et 24). Une taille de fenêtre plus grande peut
- améliorer la qualité de la compression mais consomme d'avantage de mémoire.
+ valeur comprise entre 10 et 24, représentant une fenêtre de
+ 2^value octets. Par exemple, 18 (la valeur par défaut) donne une
+ fenêtre de 256 Ko, alors que 24 en donne une de 16 Mo. Une taille de fenêtre
+ plus grande peut améliorer la qualité de la compression mais consomme
+ d'avantage de mémoire.
+
+ Fenêtre modérée pour une utilisation raisonnable de mémoire
# fenêtre de 1 Mo (2^20 octets)
+BrotliCompressionWindow 20
+
+
+ Fenêtre maximale pour la meilleure compression
# fenêtre de 16 Mo (2^24 octets) — nécessite une quantité de mémoire
+# significative pour chaque connexion
+BrotliCompressionWindow 24
+
@@ -272,6 +301,7 @@ compression
Description: Enregistre le taux de compression dans une note à des fins de
journalisation
Syntaxe: BrotliFilterNote [type] notename
+Défaut: None
Contexte: configuration globale, serveur virtuel
Statut: Extension
Module: mod_brotli
diff --git a/docs/manual/mod/mod_brotli.xml.meta b/docs/manual/mod/mod_brotli.xml.meta
index e06ba088469..8c6376e8a0f 100644
--- a/docs/manual/mod/mod_brotli.xml.meta
+++ b/docs/manual/mod/mod_brotli.xml.meta
@@ -8,6 +8,6 @@
en
- fr
+ fr
diff --git a/docs/manual/mod/mod_cern_meta.xml b/docs/manual/mod/mod_cern_meta.xml
index b2e8e8f0a51..54d2a60a4f0 100644
--- a/docs/manual/mod/mod_cern_meta.xml
+++ b/docs/manual/mod/mod_cern_meta.xml
@@ -24,7 +24,7 @@
mod_cern_meta
CERN httpd metafile semantics
-Extension
+Deprecated
mod_cern_meta.c
cern_meta_module
diff --git a/docs/manual/mod/mod_dbd.html.fr.utf8 b/docs/manual/mod/mod_dbd.html.fr.utf8
index deb056dc484..e3846f65f62 100644
--- a/docs/manual/mod/mod_dbd.html.fr.utf8
+++ b/docs/manual/mod/mod_dbd.html.fr.utf8
@@ -29,8 +29,6 @@
-Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.
Description: Gestion des connexions à une base de données SQL
Statut: Extension
Identificateur de Module: dbd_module
diff --git a/docs/manual/mod/mod_dbd.xml.fr b/docs/manual/mod/mod_dbd.xml.fr
index 4875cdfd918..8937cd7257e 100644
--- a/docs/manual/mod/mod_dbd.xml.fr
+++ b/docs/manual/mod/mod_dbd.xml.fr
@@ -1,7 +1,7 @@
-
+
diff --git a/docs/manual/mod/mod_dbd.xml.meta b/docs/manual/mod/mod_dbd.xml.meta
index 9131911db28..bf4a2e0a235 100644
--- a/docs/manual/mod/mod_dbd.xml.meta
+++ b/docs/manual/mod/mod_dbd.xml.meta
@@ -8,6 +8,6 @@
en
- fr
+ fr
diff --git a/docs/manual/mod/mod_heartmonitor.html.fr.utf8 b/docs/manual/mod/mod_heartmonitor.html.fr.utf8
index 82dbb476af0..ad744ade203 100644
--- a/docs/manual/mod/mod_heartmonitor.html.fr.utf8
+++ b/docs/manual/mod/mod_heartmonitor.html.fr.utf8
@@ -29,8 +29,6 @@
-Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.
Description: Moniteur centralisé pour les serveurs d'origine mod_heartbeat
Statut: Expérimental
Identificateur de Module: heartmonitor_module
@@ -111,10 +109,11 @@ serveur HTTP Apache
contrôler la quantité de mémoire partagée allouée pour le stockage
des données heartbeat lorsqu'on utilise
mod_slotmem_shm.
- Pour utiliser un stockage de type fichier bidimensionnel (flat-file)
- lorque le module mod_slotmem_shm n'est pas chargé, cette
- directive doit être définie à 0. La valeur doit être soit égale à 0, soit
- supérieure ou égale à 10.
+
+ Définissez cette directive à 0 pour utiliser un stockage de
+ type fichier bidimensionnel (flat-file) au lieu de la mémoire partagée
+ (c’est-à-dire sans charger mod_slotmem_shm). Lorsqu’on
+ utilise la mémoire partagée, la valeur doit être supérieure ou égale à 10.
diff --git a/docs/manual/mod/mod_heartmonitor.xml.fr b/docs/manual/mod/mod_heartmonitor.xml.fr
index a7abcdfaec2..4aa432efb8d 100644
--- a/docs/manual/mod/mod_heartmonitor.xml.fr
+++ b/docs/manual/mod/mod_heartmonitor.xml.fr
@@ -1,7 +1,7 @@
-
+
@@ -114,10 +114,11 @@ serveur HTTP Apache
contrôler la quantité de mémoire partagée allouée pour le stockage
des données heartbeat lorsqu'on utilise
mod_slotmem_shm .
- Pour utiliser un stockage de type fichier bidimensionnel (flat-file)
- lorque le module mod_slotmem_shm n'est pas chargé, cette
- directive doit être définie à 0. La valeur doit être soit égale à 0, soit
- supérieure ou égale à 10.
+
+ Définissez cette directive à 0 pour utiliser un stockage de
+ type fichier bidimensionnel (flat-file) au lieu de la mémoire partagée
+ (c’est-à-dire sans charger mod_slotmem_shm ). Lorsqu’on
+ utilise la mémoire partagée, la valeur doit être supérieure ou égale à 10.
diff --git a/docs/manual/mod/mod_heartmonitor.xml.meta b/docs/manual/mod/mod_heartmonitor.xml.meta
index d0c5b2fb350..269a7db4894 100644
--- a/docs/manual/mod/mod_heartmonitor.xml.meta
+++ b/docs/manual/mod/mod_heartmonitor.xml.meta
@@ -8,6 +8,6 @@
en
- fr
+ fr
diff --git a/docs/manual/mod/mod_imagemap.xml b/docs/manual/mod/mod_imagemap.xml
index 6a4e50f9aa9..5f360d4c7ea 100644
--- a/docs/manual/mod/mod_imagemap.xml
+++ b/docs/manual/mod/mod_imagemap.xml
@@ -24,7 +24,7 @@
mod_imagemap
Server-side imagemap processing
-Base
+Deprecated
mod_imagemap.c
imagemap_module
diff --git a/docs/manual/mod/mod_md.html.en.utf8 b/docs/manual/mod/mod_md.html.en.utf8
index 770737712d0..506a2acf810 100644
--- a/docs/manual/mod/mod_md.html.en.utf8
+++ b/docs/manual/mod/mod_md.html.en.utf8
@@ -186,16 +186,17 @@
If there is an error with an MD it will be shown here as well. This let's
you assess problems without digging through your server logs.
- There is also a new 'md-status' handler available to give you the MD information
- from 'server-status' in JSON format. You configure it as
+ There is also a new 'md-status' handler available to give you the MD information
+ from 'server-status' in JSON format. You configure it as
<Location "/md-status">
SetHandler md-status
+ Require host example.com
</Location>
- on your server. As with 'server-status' you will want to add
- authorization for this.
+ on your server. As with 'server-status' you must protect
+ the md-status output from public view using authorization restrictions (such as mod_authz_host).
If you just want to check the JSON status of a specific domain, simply append
that to your status url:
@@ -247,7 +248,7 @@
</MDomain>
- and use the 'server-status' and/or MDMessageCmd to see how it operates. You will
+ and use the 'server-status' and/or MDMessageCmd to see how it operates. You will
see if Stapling information is there, how long it is valid, from where it came and
when it will be refreshed.
@@ -452,13 +453,13 @@
If you configure more than one URL, each one is tried in a round-robin
fashion after a number of failures. You can configure how quickly or
- delayed that happens via the MDRetryDelay and
- MDRetryFailover directives. The default setting
+ delayed that happens via the MDRetryDelay and
+ MDRetryFailover directives. The default setting
makes a failover after about half a day of trying.
All other settings apply to each of these URLs. It is therefore
not possible to have two with different
- MDExternalAccountBindings, for example.
+ MDExternalAccountBindings, for example.
For testing, CAs commonly offer a second service URL.
The 'test' service does not give certificates valid in a browser,
@@ -558,7 +559,7 @@
Module: mod_md
- This is part of the 'server-status' HTML user interface and has nothing to
+ This is part of the 'server-status' HTML user interface and has nothing to
do with the core functioning itself. It defines the link offered on that
page for easy checking of a certificate monitor. The SHA256 fingerprint
of the certificate is appended to the configured url.
@@ -656,9 +657,11 @@
Compatibility: Available in version 2.4.58 and later
- Set the way MDChallengeDns01 command is invoked, e.g the number and
- types of arguments. See MDChallengeDns01
+ Set the way MDChallengeDns01
+ command is invoked, e.g the number and types of arguments.
+ See MDChallengeDns01
for the differences.
+
This setting is global and cannot be varied per domain.
@@ -807,8 +810,10 @@
Compatibility: Available in version 2.4.58 and later
- The mode `all` is the behavior as in all previous versions. Both ServerName
- and ServerAlias are inspected to find the MDomain matching a VirtualHost.
+ The mode `all` is the behavior as in all previous versions. Both
+ ServerName
+ and ServerAlias are inspected
+ to find the MDomain matching a VirtualHost.
This automatically detects coverage, even when you only have added
one of the names to an MDomain.
@@ -1182,18 +1187,18 @@ MDomain example2.org auto
This about a non-standard ACME extension by Let's Encrypt.
- Lets Encrypt supports Certificate Profiles in their CA. This,
+ Let's Encrypt supports Certificate Profiles in their CA. This,
among some other details, let's you select the lifetime of the
certificates you get. The "classic" profile is the default and
will keep the 90 days, the "tlsserver" profile is also 90 days
with a max of 25 Subject Alternative Names. The "shortlived"
profile will issue certificates with only 6 days of validity.
- If you do not change your mod_md configuration, you will
+ If you do not change your mod_md configuration, you will
continue to get the 90 days certificates. Should you believe
that a shorter lifetime is beneficial for you (and take the
risk that the renewal time is way shorter),
-+ you can configure the profile to use via 'MDProfile shortlived'.
+ you can configure the profile to use via 'MDProfile shortlived'.
The profile names are defined by the CA. If a profile you
configure is not available, no profile will be used and
@@ -1214,6 +1219,7 @@ MDomain example2.org auto
Context: server config
Status: Experimental
Module: mod_md
+Compatibility: Available in version 2.4.64 and later
Controls if a MDProfile
@@ -1272,7 +1278,7 @@ MDomain example2.org auto
En-/Disable certificate renewals triggered via the ACME ARI
extension (rfc9773). These renewals happen *in addition* to
- the mechanism controlled by MDRenewWindow.
+ the mechanism controlled by MDRenewWindow.
ACME ARI allows an ACME CA to somewhat shape incoming renewal traffic. More importantly though, it can inform clients of @@ -1292,7 +1298,7 @@ MDomain example2.org auto
- If the validity of the certificate falls below duration, mod_md
+ If the validity of the certificate falls below duration, mod_md
will get a new signed certificate.
Normally, certificates are valid for around 90 days and mod_md will renew @@ -1411,7 +1417,7 @@ MDRenewWindow 10%
The number of consecutive errors on renewing a certificate before
another CA is selected. This only applies to configurations that
- have more than one MDCertificateAuthority
+ have more than one MDCertificateAuthority
specified.
| Description: | Control if Managed Domain information is added to server-status. |
|---|---|
| Description: | Control if Managed Domain information is added to server-status. |
| Syntax: | MDServerStatus on|off |
| Default: | MDServerStatus on |
| Default: | MDServerStatus off |
| Context: | server config |
| Status: | Experimental |
| Module: | mod_md |
- Apaches 'server-status' handler allows you configure a resource to monitor
- what is going on. This includes now a section listing all Managed Domains
- with the DNS names, renewal status, lifetimes and main properties.
+ If enabled, adds a section to the
+ mod_status 'server-status' handler
+ output which lists all Managed Domains with the DNS
+ names, renewal status, lifetimes and main properties.
- You can switch that off using this directive.
+ As with 'md-status', the 'server-status' output
+ must be protected from public view
+ using appropriate authorization restrictions.
Enable this to use a lock file on server startup when
- MDStoreDir is synchronized with the server
+ MDStoreDir is synchronized with the server
configuration and renewed certificates are activated.
Locking is intended for setups in a cluster that have a shared
- file system for MDStoreDir. It will protect the activation of
+ file system for MDStoreDir.
+ It will protect the activation of
renewed certificates when cluster nodes are restarted/reloaded
at the same time. Under the condition that the shared file
system does support file locking.
@@ -1618,8 +1628,8 @@ MDRenewWindow 10%
window left. With the default, this mean 9 days for certificates from
Let's Encrypt.
- It also applies to Managed Domains with static certificate files (
- see MDCertificateFile).
+ It also applies to Managed Domains with static certificate files (see
+ MDCertificateFile).
- Il existe aussi un nouveau gestionnaire, "md-status", qui peut
+ Il existe aussi un nouveau gestionnaire,
+ « md-status », qui peut
vous fournir les informations à propos des domaines gérés à
- partir de "server-status" et au format JSON. Vous pouvez le
+ partir de « server-status » et au format JSON. Vous pouvez le
configurer comme suit sur votre serveur :
<Location "/md-status"> SetHandler md-status + Require host example.com </Location>
- Comme pour "server-status", vous devez
- ajouter les autorisations nécessaires.
+ Comme pour « server-status », vous
+ devez protéger la sortie de
+ md-status de la vue du public en instaurant des
+ restrictions d’autorisation (telles que
+ mod_authz_host).
Si vous ne souhaitez recevoir l'état JSON que pour un domaine spécifique, ajoutez le simplement à votre URL d'état : @@ -279,7 +284,7 @@ </MDomain>
- et utilisez 'server-status' et/ou MDMessageCmd pour voir comment tout
+ et utilisez « server-status » et/ou MDMessageCmd pour voir comment tout
cela fonctionne. Vous pourrez alors vérifier si l'information
d'agrafage est présente, sa durée de validité, son origine et à
quel moment elle sera rafraîchie.
@@ -350,6 +355,7 @@
MDDriveMode
MDExternalAccountBinding
MDHttpProxy
MDHttpProxyCACertificateFile
MDInitialDelay
MDMatchNames
MDMember
Cette directive est principalement utilisée dans les
@@ -522,13 +530,13 @@
Si vous spécifiez plusieurs URLs, chacune d'entre elles est
testée en mode tourniquet ("round-robin") après un certain
nombre d'échecs. Vous pouvez définir la rapidité de ce processus
- à l'aide des directives MDRetryDelay et
- MDRetryFailover. Par défaut, une demie
+ à l'aide des directives MDRetryDelay et
+ MDRetryFailover. Par défaut, une demie
journée d'essais infructueux est considérée comme un échec.
-
+
Tous les autres réglages s'appliquent à chacune de ces URLs. Il
est ainsi par exemple impossible d'en avoir deux avec des
- directives MDExternalAccountBinding
+ directives MDExternalAccountBinding
différentes.
A des fins de test, les CAs fournissent en général une seconde @@ -636,7 +644,8 @@
- Cette directive impacte l'interface utilisateur HTML 'server-status' et
+ Cette directive impacte l'interface utilisateur HTML
+ « server-status » et
n'a rien à voir avec le fonctionnement de mod_md proprement dit.
Elle permet de définir le lien qui s'affiche sur cette interface
pour accéder facilement à un moniteur de certificat. L'empreinte
@@ -753,7 +762,7 @@
Cette directive permet de définir de quelle manière est invoquée
- la commande MDChallengeDns01, à savoir le nombre et le type de
+ la commande MDChallengeDns01, à savoir le nombre et le type de
ses arguments. Voir MDChallengeDns01 pour les
différences.
Cette définition est globale et ne peut pas s'appliquer
@@ -888,14 +897,50 @@
Cette directive permet de spécifier un serveur http mandataire +
Utiliser l’URL du serveur http mandataire direct donné
pour se connecter à l'autorité de certification spécifiée via
MDCertificateAuthority. Vous
devez la définir si votre serveur web ne peut atteindre internet que
- via un serveur mandataire.
+ via un mandataire direct.
| Description: | Définition des certificats racine (CA) à utiliser pour les + connexions TLS avec le mandataire http. |
|---|---|
| Syntaxe: | MDHttpProxyCACertificateFile path-to-pem-file |
| Défaut: | MDHttpProxyCACertificateFile none |
| Contexte: | configuration globale |
| Statut: | Expérimental |
| Module: | mod_md |
| Compatibilité: | Disponible à partir de la version 2.4.69 du serveur HTTP + Apache |
+ Cette directive est utilisée pour les connexions avec le
+ mandataire HTTPS direct (directive MDHttpProxy). Elle est requise si le
+ certificat du mandataire HTTPS ne peut pas être vérifié en
+ utilisant le magasin général de la racine du CA. Cela se produit
+ parfois dans les environnements de test ou au sein d’une
+ entreprise.
+
+ Le certificat du serveur ACME est vérifié avec les certificats
+ racine définis via la directive MDCACertificateFile ; vous serez
+ donc amené à utiliser les deux définitions.
+
+ Utilisez « none » comme chemin pour désactiver cette + fonctionnalité explicitement. +
+ Cette directive peut être configurée séparément pour chaque
+ MDomain.
- Le mode `all` correspond au comportement de toutes les versions
- précédentes. ServerName et ServerAlias sont inspectés pour
- trouver le MDomain qui correspond à un serveur virtuel. Les
- recouvrements sont automatiquement détectés, même si vous n'avez
- ajouté qu'un des noms à un MDomain.
+ Le mode `all` correspond au comportement de toutes les versions
+ précédentes. ServerName et
+ ServerAlias sont inspectés
+ pour trouver le MDomain
+ qui correspond à un serveur virtuel. Les recouvrements sont
+ automatiquement détectés, même si vous n'avez ajouté qu'un des
+ noms à un MDomain.
Cet automatisme présente cependant des inconvénients avec les configurations plus complexes. Si vous définissez cette @@ -1370,7 +1417,7 @@ MDomain example2.org auto
Il s'agit d'une extension non standard d'ACME par Let's Encrypt.
- Lets Encrypt prend en charge les profiles de certificat dans + Let’s Encrypt prend en charge les profiles de certificat dans leurs CA. Cette fonctionnalité, entre autres détails, vous permet de définir la durée de validité des certificats que vous recevez. Le profile par défaut « classic » conserve la valeur de @@ -1379,7 +1426,7 @@ MDomain example2.org auto profile « shortlived » délivre des certificats dont la durée de validité est de 6 jours seulement.
- Si vous ne modifiez pas la configuration de votre module mod_md,
+ Si vous ne modifiez pas la configuration de votre module mod_md,
vous continuerez à recevoir des certificats d'une durée de
validité de 90 jours. Si vous pensez qu'une durée de validité
plus courte convient mieux à votre situation (et acceptez le
@@ -1405,6 +1452,8 @@ MDomain example2.org auto
Cette directive permet de contrôler si un MDProfile que vous définissez est
@@ -1469,7 +1518,7 @@ MDomain example2.org auto
déclenchement du renouvellement des certificats à l'aide de
l'extension ACME ARI (rfc9773). Ces renouvellements s'ajoutent à
ceux déclenchés par le mécanisme contrôlé à l'aide de la
- directive MDRenewWindow.
+ directive MDRenewWindow.
ACME ARI permet en quelque sorte à une CA ACME de façonner le trafic entrant des renouvellements. Plus important cependant, @@ -1490,7 +1539,7 @@ MDomain example2.org auto
- Lorsqu'un certificat arrive à expiration, mod_md va
+ Lorsqu'un certificat arrive à expiration, mod_md va
tenter d'en obtenir un nouveau signé.
Normalement, les certificats ont une validité de 90 jours, et @@ -1623,10 +1672,9 @@ MDRenewWindow 10% Apache
- Le nombre d'erreurs consécutives lors du renouvellement d'un
+ Le nombre d'erreurs consécutives lors du renouvellement d'un
certificat avant la sélection d'une autre CA. Ne s'applique
- qu'aux configurations pour lesquelles plusieurs
- MDCertificateAuthority ont été
+ qu'aux configurations pour lesquelles plusieurs MDCertificateAuthority ont été
spécifiées.
| Description: | Définit si les informations à propos des domaines gérés - sont ajoutés ou non à server-status. |
|---|---|
| Syntaxe: | MDServerStatus on|off |
| Défaut: | MDServerStatus on |
| Défaut: | MDServerStatus off |
| Contexte: | configuration globale |
| Statut: | Expérimental |
| Module: | mod_md |
- Le gestionnaire d'Apache "server-status" vous permet de - configurer une ressource pour monitorer le fonctionnement du - serveur. Cette ressource inclut maintenant une section indiquant - tous les domaines gérés avec leur nom DNS, l'état de - renouvellement du certificat, la durée de vie de ce dernier, - ainsi que d'autres propriétés fondamentales. -
- Cette directive permet d'activer/désactiver cette ressource. +
Si cette directive est activée, une section est ajoutée au
+ gestionnaire « server-status » de
+ mod_status, qui liste tous les domaines gérés avec
+ leur nom DNS, l'état de renouvellement du certificat, la durée de
+ vie de ce dernier, ainsi que d'autres propriétés fondamentales.
+
+ Comme avec « md-status », la sortie de
+ « server-status » doit être
+ protégée de la vue du public en instaurant des restrictions
+ d’autorisation appropriées.
- Définissez cette directive pour utiliser un fichier verrou au
- démarrage du serveur lorsque MDStoreDir
- est synchronisé avec la configuration du serveur et si les
- certificats renouvelés sont activés.
+ Définissez cette directive pour utiliser un fichier verrou au
+ démarrage du serveur lorsque MDStoreDir est synchronisé avec la
+ configuration du serveur et si les certificats renouvelés sont
+ activés.
Le verrouillage a été implémenté pour les configurations de
- cluster où MDStoreDir appartient à un système de fichiers
+ cluster où MDStoreDir appartient à un système de fichiers
partagé. L'activation des certificats renouvelés sera alors
protégée lorsque plusieurs noeuds du cluster sont redémarrés ou
reconfigurés simultanément ; ceci à condition bien entendu que
diff --git a/docs/manual/mod/mod_md.xml b/docs/manual/mod/mod_md.xml
index a78614d640e..f4aedc85926 100644
--- a/docs/manual/mod/mod_md.xml
+++ b/docs/manual/mod/mod_md.xml
@@ -124,7 +124,7 @@ Protocols h2 http/1.1 acme-tls/1
And the `tls-alpn-01` challenge type is available. -
+
- There is also a new 'md-status' handler available to give you the MD information
- from 'server-status' in JSON format. You configure it as
+ There is also a new 'md-status' handler available to give you the MD information
+ from 'server-status' in JSON format. You configure it as
- on your server. As with 'server-status' you will want to add
- authorization for this.
+ on your server. As with 'server-status' you must protect
+ the md-status output from public view using authorization restrictions (such as
If you just want to check the JSON status of a specific domain, simply append that to your status url: @@ -249,7 +250,7 @@ MDChallengeDns01 /usr/bin/acme-setup-dns </MDomain>
- and use the 'server-status' and/or server-status' and/or
@@ -537,9 +538,39 @@ MDCertificateAuthority https://acme-staging-v02.api.letsencrypt.org/directory
Use a http proxy to connect to the
+ Use the given http forward proxy URL to connect to the
+ This is used for connections to the HTTPS forward proxy (
+ The certificate of the ACME server is verified with the root certificates set by
+
+ Use "none" as path to disable explicitly.
+
+ This can be configured separately for each
- Apaches 'server-status' handler allows you configure a resource to monitor
- what is going on. This includes now a section listing all Managed Domains
- with the DNS names, renewal status, lifetimes and main properties.
+ If enabled, adds a section to the
+
- You can switch that off using this directive.
+ As with '
- This is part of the 'server-status' HTML user interface and has nothing to
+ This is part of the '
This is mainly used in test setups where the module needs to
diff --git a/docs/manual/mod/mod_md.xml.fr b/docs/manual/mod/mod_md.xml.fr
index 574bebc5013..de48c644041 100644
--- a/docs/manual/mod/mod_md.xml.fr
+++ b/docs/manual/mod/mod_md.xml.fr
@@ -2,7 +2,7 @@
-
+
+
@@ -580,7 +580,8 @@ mandatées
Les directives situées dans une section Par exemple, les lignes suivantes n'autoriseront à accéder à un
contenu via votre serveur mandataire que les hôtes appartenant à
@@ -823,6 +824,13 @@ ProxyRemote ftp http://ftpproxy.mydomain:8080
d'authentification. La variable d'environnement Proxy-Chain-Auth n'est plus prise en
compte si cet argument est utilisé. Lorsqu’un mandataire direct (distant) est configuré, la résolution DNS du
+ nom d’hôte originel/dorsal n’est effectuée que sur le mandataire direct.
+ Toute règle Apache HTTP Server Version 2.5 This module lets backend servers announce themselves to a
+ front-end reverse proxy, which then adds each announcing backend as a live
+ member (worker) of a Communication uses plain unicast UDP datagrams (not
+ multicast, which is filtered on most networks and does not traverse the
+ public Internet). The data flows from backend to proxy: Datagrams are fire-and-forget: a lost announcement is recovered by the
+ next periodic one, and reordering is rejected by a per-backend timestamp
+ check, so no connection, reconnect, or framing layer is needed. On the proxy, This module requires the service of
+ Any host that can reach the proxy's receive port could otherwise announce
+ an arbitrary backend URL and cause the proxy to send client traffic to it
+ (and a UDP source address is trivially spoofable). Set
+ Announcements are authenticated but not encrypted; the payload is
+ operational metadata (backend URLs), not secret data. Transport
+ confidentiality (e.g. DTLS) is not currently provided and would be a separate
+ future layer. The following pair of configurations sets up a self-registering balancer.
+ The backends require no knowledge of each other and the proxy needs no
+ pre-declared On the reverse proxy: On each backend server: When a backend starts it begins sending announcements. The proxy
+ verifies each announcement against the shared secret, adds
+ A backend added at runtime occupies one of the balancer's growth slots
+ for the lifetime of the server process; it is disabled rather than removed
+ when it stops announcing, matching the behaviour of the
+ The Use The This directive is used on a backend, alongside
+ The The named balancer must exist and have spare capacity. Declare it with a
+ The The interval must be meaningfully smaller than the proxy's
+ The The address and port are both optional and, when omitted, are inherited
+ from this server's own address and port (its Backends send to this address via
+ The If unset, the default is 30 seconds. A larger window tolerates greater
+ clock skew between hosts; a smaller window bounds the freshness check. Note
+ that the per-backend strictly-increasing-timestamp check (see
+ The If If no secret is configured the channel is unauthenticated and the proxy
+ emits a warning when it starts listening. Because the secret is stored in
+ the configuration file, restrict that file's permissions as you would for a
+ private key. The timestamp-based replay protection compares the announcement's time
+ against the proxy's clock, so the proxy and backends must have reasonably
+ synchronised clocks (for example via NTP). See
+ The The default, server-status.server-status' handler
+ output which lists all Managed Domains with the DNS
+ names, renewal status, lifetimes and main properties.
md-status', the 'server-status' output
+ must be protected from public view
+ using appropriate authorization restrictions.
server-status' HTML user interface and has nothing to
do with the core functioning itself. It defines the link offered on that
page for easy checking of a certificate monitor. The SHA256 fingerprint
of the certificate is appended to the configured url.
@@ -1618,6 +1652,7 @@ MDMessageCmd /etc/apache/md-message

Apache Module mod_proxy_beacon
+
+
+
+
+Description: Dynamic Balancer membership where backends announce themselves
+to the reverse proxy over unicast UDP datagrams
+Status: Extension
+Module Identifier: proxy_beacon_module
+Source File: mod_proxy_beacon.c Compatibility: Available in Apache 2.5 and later Summary
+
+ mod_proxy_balancer balancer. When a
+ backend stops announcing, the proxy takes it out of rotation. This provides
+ self-registering, self-healing balancer membership without editing the proxy
+ configuration or driving the balancer-manager by hand.
+
+
+ ProxyBeaconListen).ProxyBeaconAddress), advertising
+ its own routable URL
+ (ProxyBeaconAdvertise).ProxyBeaconBalancer names the balancer
+ that announced backends are added to. Membership changes are applied using
+ the same internal mechanism as the balancer-manager web
+ interface, so a backend added this way behaves exactly like a statically
+ configured or manually added
+ BalancerMember, and is visible and
+ editable in the balancer-manager.mod_watchdog and mod_proxy_balancer. The
+ background work (listening, publishing, adding and evicting members) runs in
+ a single mod_watchdog child process, so it is not available
+ under the prefork MPM behaviour where that singleton cannot
+ run.Authentication
+ ProxyBeaconSecret to the same value on the proxy and on
+ every backend so that announcements are authenticated with a keyed
+ message-authentication code (MAC) and a timestamp. When a secret is
+ configured the proxy drops any announcement that is not validly signed and
+ recent. If no secret is configured the channel is unauthenticated
+ and the proxy logs a warning at startup.Confidentiality
+ Topics
+
+
Usage exampleDirectives
+
+
+
ProxyBeaconAddress
ProxyBeaconAdvertise
ProxyBeaconBalancer
ProxyBeaconInterval
ProxyBeaconListen
ProxyBeaconMaxSkew
ProxyBeaconSecret
ProxyBeaconTimeoutBugfix checklist
See also
+Usage example ¶
+
+
+ BalancerMember
+ entries — only an empty balancer with room to grow.# Receive backend announcements on the cluster network interface (UDP).
+ProxyBeaconListen 0.0.0.0:5555
+ProxyBeaconSecret "a-long-random-shared-cluster-secret"
+ProxyBeaconBalancer cluster
+
+# A backend is dropped from rotation if it does not announce for 30 seconds.
+ProxyBeaconTimeout 30
+
+# An initially-empty balancer with spare slots for the dynamic members.
+<Proxy balancer://cluster>
+ ProxySet growth=16
+</Proxy>
+ProxyPass "/" "balancer://cluster/"
+ProxyPassReverse "/" "balancer://cluster/"
+
+
+ # Announce this backend's routable origin to the proxy every 10 seconds (UDP).
+ProxyBeaconAddress proxy.example.com:5555
+ProxyBeaconAdvertise http://10.0.0.5:8080
+ProxyBeaconSecret "a-long-random-shared-cluster-secret"
+ProxyBeaconInterval 10
+
+
+ http://10.0.0.5:8080 as a member of
+ balancer://cluster, and enables it. If that backend later stops
+ announcing for longer than ProxyBeaconTimeout, the proxy
+ disables the member (taking it out of rotation); a subsequent announcement
+ re-enables it.balancer-manager (which can add, but not remove, workers at
+ runtime). Size growth for the maximum number of backends you
+ expect to register.ProxyBeaconAddress Directive ¶
+
+
+
+Description: Address of the reverse proxy to which a backend sends its
+announcements
+Syntax: ProxyBeaconAddress address:port
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconAddress directive marks a server as an
+ announcement sender (a backend). It sends UDP datagrams to the
+ proxy's ProxyBeaconListen address given by
+ address:port, e.g. proxy.example.com:5555 (a leading
+ scheme such as tcp:// is accepted and ignored). Because UDP is
+ connectionless, a backend may be started before the proxy is available:
+ early datagrams are simply dropped and the next interval retries.ProxyBeaconAdvertise to specify the routable URL
+ the backend announces. ProxyBeaconAddress and
+ ProxyBeaconListen are mutually exclusive on the same
+ server.ProxyBeaconAdvertise Directive ¶
+
+
+
+Description: The routable URL a backend announces to the reverse proxy
+Syntax: ProxyBeaconAdvertise url
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconAdvertise directive sets the backend's
+ own reachable origin (for example http://10.0.0.5:8080) that the
+ proxy will add as a BalancerMember.
+ It must be a full scheme://host[:port] URL that the proxy can
+ reach — not the local listen address — and is validated when the
+ configuration is parsed.ProxyBeaconAddress. If it is omitted, the backend still
+ sends a heartbeat but advertises no URL, so the proxy logs the
+ announcement without adding a member.ProxyBeaconBalancer Directive ¶
+
+
+
+Description: Name of the balancer that announced backends are added to
+Syntax: ProxyBeaconBalancer name
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconBalancer directive names the balancer,
+ on the reverse proxy, into which announced backends are inserted as members.
+ Give the bare balancer name (for example cluster for
+ balancer://cluster); a leading balancer:// is
+ accepted and stripped.<Proxy> block and a
+ growth setting (or rely on
+ BalancerGrowth) so there are free
+ slots for the dynamically added members. This directive is used together
+ with ProxyBeaconListen.ProxyBeaconInterval Directive ¶
+
+
+
+Description: How often a backend publishes its announcement
+Syntax: ProxyBeaconInterval interval
+Default: ProxyBeaconInterval 5
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconInterval directive sets how frequently
+ a backend (a ProxyBeaconAddress server) publishes its
+ announcement. It uses the
+ time-interval directive syntax and
+ defaults to seconds; the default is 5 seconds.ProxyBeaconTimeout, so that the occasional lost or
+ delayed announcement does not cause a healthy backend to be evicted.ProxyBeaconListen Directive ¶
+
+
+
+Description: Address on which the reverse proxy receives backend
+beacons
+Syntax: ProxyBeaconListen [address][:port]
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconListen directive marks a server as
+ the beacon receiver (the reverse proxy). It binds a UDP socket to
+ the given address, e.g. 0.0.0.0:5555 to receive on all
+ interfaces. A leading scheme (such as tcp://) is accepted and
+ ignored.Listen/ServerName). With no argument at all, the beacon
+ listener binds the server's own address and port; given just an address it
+ inherits the port, and so on. Because UDP and TCP are independent port
+ spaces, binding the beacon socket to the server's port does not
+ collide with the server's TCP listener — letting the beacon channel
+ share the service endpoint, which also identifies the proxy to backends by
+ its real address. (The listener binds in an unprivileged child, so a
+ privileged port such as 80 or 443 cannot be shared this way; use the
+ server's port only when it is non-privileged.)ProxyBeaconAddress. The directive should be used
+ together with ProxyBeaconBalancer; without it,
+ announcements are received and logged but no members are added.
+ ProxyBeaconListen and
+ ProxyBeaconAddress are mutually exclusive on the same
+ server.ProxyBeaconMaxSkew Directive ¶
+
+
+
+Description: Maximum allowed age of a signed announcement
+Syntax: ProxyBeaconMaxSkew interval
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconMaxSkew directive sets the anti-replay
+ window used when ProxyBeaconSecret is configured: the
+ proxy rejects any announcement whose signed timestamp differs from the
+ current time by more than this amount, in either direction. It uses the
+ time-interval directive syntax and
+ defaults to seconds.ProxyBeaconSecret) blocks replays regardless of this
+ window. This directive is used on the proxy.ProxyBeaconSecret Directive ¶
+
+
+
+Description: Pre-shared secret used to authenticate announcements
+Syntax: ProxyBeaconSecret secret
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconSecret directive sets a pre-shared
+ cluster secret. It must be configured with the same value on the
+ reverse proxy and on every backend. The backend (sender) signs each
+ announcement with a keyed message-authentication code (a SipHash MAC) derived
+ from the secret, together with a timestamp; the proxy (receiver) recomputes the MAC and
+ checks the timestamp, dropping any announcement that is forged, tampered
+ with, or replayed. Replayed messages are caught two ways: a freshness window
+ (ProxyBeaconMaxSkew) rejects old timestamps, and a
+ per-backend check rejects any announcement whose timestamp does not strictly
+ advance, so a captured-and-resent message (for example, one replayed to keep
+ a dead backend from being evicted) is dropped.ProxyBeaconSecret is set on the proxy, every
+ announcement must carry a valid, recent MAC or it is rejected. If the
+ secrets on the proxy and a backend differ, that backend's announcements are
+ silently rejected (and logged), which appears as the backend never joining
+ the balancer.Clock synchronisation
+ ProxyBeaconMaxSkew.ProxyBeaconTimeout Directive ¶
+
+
+
+Description: How long the proxy waits, without an announcement, before a backend
+is taken out of rotation
+Syntax: ProxyBeaconTimeout interval
+Default: ProxyBeaconTimeout 0
+Context: server config, virtual host
+Status: Extension
+Module: mod_proxy_beacon ProxyBeaconTimeout directive sets how long the
+ reverse proxy will wait for an announcement from a backend before disabling
+ that backend's balancer member (taking it out of rotation). A later
+ announcement from the same backend re-enables it. It uses the
+ time-interval directive syntax and
+ defaults to seconds.0, disables eviction entirely: backends are
+ added when they announce but are never automatically removed. Set this to a
+ small multiple of the backends' ProxyBeaconInterval to
+ enable self-healing membership. This directive is used on the proxy.