User Tools

Site Tools


informatique:logiciels:apache

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
informatique:logiciels:apache [2016/01/04 15:23] – mod_proxy pteuinformatique:logiciels:apache [2020/08/25 10:28] – [Syntaxe] mod_rewrite pteu
Line 76: Line 76:
 </code> </code>
  
-Les droits d'accès sont définis principalement par les directives **Allow**, **Deny** et **Order**. Order permet de modifier l'ordre de traitement des 2 directives précédente ; voici la façon dont les vérifications sont traitées (source : [[http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html|doc apache]]) :+<WRAP center round important 60%> 
 +Depuis la version 2.4 d'Apache il est recommandé d'utiliser la directive **Require**, [[http://httpd.apache.org/docs/2.4/howto/access.html#host|les directives allow, deny et order étant désormais obsolètes]]. Des exemples d'utilisation de Require sont listés dans la partie [[informatique:logiciels:apache#serveur_mandataire_mod_proxy|mod_proxy]]. 
 +</WRAP> 
 + 
 +<del>Les droits d'accès sont définis principalement par les directives **Allow**, **Deny** et **Order**.</del> Order permet de modifier l'ordre de traitement des 2 directives précédente ; voici la façon dont les vérifications sont traitées (source : [[http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html|doc apache]]) :
  
 >Ordering is one of: >Ordering is one of:
Line 185: Line 189:
  
 # active la fonctionnalité de mandataire direct # active la fonctionnalité de mandataire direct
-# ne concerne pas les directives ProxyPass+# ne concerne pas les directives ProxyPass (reverse proxy, voir plus bas)
 ProxyRequests On ProxyRequests On
  
Line 215: Line 219:
 # ProxyRemoteMatch est identique à ceci près que le premier paramètre est une regexpr # ProxyRemoteMatch est identique à ceci près que le premier paramètre est une regexpr
  
-# Créer un alias vers un site distant (~mirroring) / mandataire inverse ou passerelle +# Créer un "aliasvers un site distant (~mirroring) / mandataire inverse (reverse proxy) ou passerelle 
-# normalement utilisé avec "ProxyRequest on" +# ex : http://mon_proxy/pteu/ -> http://pteu.fr/
-# ex : http://ce_serveur/pteu/ -> http://pteu.fr/+
 <Location "/pteu/"> <Location "/pteu/">
    ProxyPass "http://pteu.fr/"    ProxyPass "http://pteu.fr/"
Line 224: Line 227:
 #ProxyPass "/pteu/" "http://pteu.fr/" #ProxyPass "/pteu/" "http://pteu.fr/"
  
- # Enable/disable the handling of HTTP/1.1 "Via:" headers. +# Enable/disable the handling of HTTP/1.1 "Via:" headers. 
- # ("Full" adds the server version; "Block" removes all outgoing Via: headers) +# ("Full" adds the server version; "Block" removes all outgoing Via: headers) 
- # Set to one of: Off | On | Full | Block +# Set to one of: Off | On | Full | Block 
- ProxyVia Off+ProxyVia Off
  
-definit le nombre max de proxys traversés / pour éviter les boucles infinies+définit le nombre max de proxys traversés / pour éviter les boucles infinies
 ProxyMaxForwards 5 ProxyMaxForwards 5
 # timeout réponse d'un site destination; par défaut = Timeout = 60s # timeout réponse d'un site destination; par défaut = Timeout = 60s
Line 240: Line 243:
 # #
 # bloquer via nom d'hote, de domaine ou tld # bloquer via nom d'hote, de domaine ou tld
-# attention les DNS sont résolus au démarrage ce qui ralentit le démarrage d'Apache+# attention les DNS sont résolus au démarrage d'Apache, ce qui le ralentit si en grand nombre
 ProxyBlock ".sex" "example.com" ProxyBlock ".sex" "example.com"
 </IfModule> </IfModule>
Line 258: Line 261:
 </code> </code>
  
-=====Réécriture / mod_rewrite=====+=====mod_rewrite=====
  
-Le **mod_rewrite** permet de manipuler les requêtes entrantes.+Le **mod_rewrite** permet de manipuler les requêtes entrantes du serveur http.
  
-Activation du module apache :+Activation du module Apache :
 <code bash> <code bash>
 a2enmod rewrite a2enmod rewrite
 </code> </code>
  
-Mise ne place d'une redirection temporaire ajouter ces lignes dans le fichier de configuration du vhost (''/etc/apache2/site-enable/vhost_redir'' dans mon cas) :+====Syntaxe==== 
 + 
 +source : https://httpd.apache.org/docs/current/fr/mod/mod_rewrite.html#rewriterule 
 + 
 +Exemple de blocage de sites :
 <code bash> <code bash>
 +<IfModule mod_rewrite.c>
 +   RewriteCond %{HTTP_HOST} sex.com [NC,OR]
 +   RewriteCond %{HTTP_HOST} poker.fr [NC,OR]
 +   RewriteCond %{HTTP_HOST} drugs.com [NC] # pas de OR pour le dernière condition...
 +   RewriteRule ^(.*)$ - [F,L]
 +</IfModule>
 +</code>
 +On enchaine différentes conditions ''RewriteCond'' (avec le drapeau ''NC'' pour //NoCase//, insensible à la casse) suivis d'un //OU logique// (''OR''), puis on définit la règle ''RewriteRule'' qui contient l'action ''F'' (envoi une erreur **403 : Forbidden** au navigateur) et ''L'' (last) pour arrêter le processus de réécriture.
 +
 +Exemple de mise ne place d'une redirection (permanente=301 par défaut) : ajouter ces lignes dans le fichier de configuration du vhost (''/etc/apache2/site-enable/vhost_redir'' dans mon cas) :
 +<code bash>
 +<IfModule mod_rewrite.c>
 RewriteEngine On RewriteEngine On
-RewriteRule ^(.*)$ http://pteu.fr$1 [R=301,L]+RewriteRule ^(.*)$ http://pteu.fr$1 [R,L] 
 +</IfModule>
 </code> </code>
  
 **Syntaxe** : ''RewriteRule <regex> <url de redirection> [<paramètres>]'' **Syntaxe** : ''RewriteRule <regex> <url de redirection> [<paramètres>]''
  
-dans l'exemple ci-dessus, on redirige tout (''^(.*)$'') vers pteu.fr, avec un code HTTP ''301'' (qui correspond à une redirection temporaire). ''L'' indique que c'est la dernière règle à parcourir.+dans l'exemple ci-dessus, on redirige tout (''^(.*)$'') vers pteu.fr, avec un code HTTP ''301'' (qui correspond à une redirection permanente). On peut préciser une redirection temporaire (code=302avec : 
 +<code bash> 
 +[..
 +RewriteRule ^(.*)$ http://pteu.fr$1 [R=302,L] 
 +</code> 
  
-==== Générer un certificat ====+=====Générer un certificat=====
  
 Sous Redhat : Sous Redhat :
Line 410: Line 435:
 =====De l'utilisation d'apache2ctl===== =====De l'utilisation d'apache2ctl=====
  
-Utilisation de l'outil de diagnostique **apache2ctl** :+Utilisation de l'outil de diagnostique **apache2ctl** (ou **apachectl**, c'est un alias pour la "compatibilité ascendante": 
 +  * ''apache2ctl -V'' : affiche la version et les options de compilation 
 +<code bash> 
 +apachectl -V 
 +Server version: Apache/2.4.29 (Unix) 
 +Server built:   Oct 26 2017 16:18:29 
 +Server's Module Magic Number: 20120211:68 
 +Server loaded:  APR 1.6.2, APR-UTIL 1.6.0 
 +Compiled using: APR 1.6.2, APR-UTIL 1.6.0 
 +Architecture:   64-bit 
 +Server MPM:     worker 
 +  threaded:     yes (fixed thread count) 
 +    forked:     yes (variable process count) 
 +Server compiled with.... 
 + -D APR_HAS_SENDFILE 
 + -D APR_HAS_MMAP 
 +[..] 
 +</code>
   * ''apache2ctl -S'' : permet de lister tous les VirtualHost pris en compte par Apache   * ''apache2ctl -S'' : permet de lister tous les VirtualHost pris en compte par Apache
 <code bash> <code bash>
Line 421: Line 463:
 Syntax OK Syntax OK
 </code> </code>
 +  * ''apache2ctl -M'' : lister les modules chargés
 +
  
 ===== Divers ===== ===== Divers =====
informatique/logiciels/apache.txt · Last modified: 2020/11/02 17:57 by pteu