| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| informatique:logiciels:apache [2016/01/04 15:35] – [Proxy / mod_proxy] pteu | informatique:logiciels:apache [2020/11/02 17:57] (current) – pteu |
|---|
| </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: |
| |
| |
| =====Serveur mandataire / mod_proxy===== | =====Proxy / mod_proxy===== |
| |
| Ce module permet d'activer la fonctionnalité de serveur mandataire d'Apache. Il nécessite l'activation d'autres mod pour fonctionner correctement : | Ce module permet d'activer la fonctionnalité de serveur mandataire d'Apache. Il nécessite l'activation d'autres mod pour fonctionner correctement : |
| |
| # 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 |
| |
| # 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 "alias" vers 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/" |
| #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 |
| # | # |
| # 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> |
| </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=302) avec : |
| | <code bash> |
| | [..] |
| | RewriteRule ^(.*)$ http://pteu.fr$1 [R=302,L] |
| | </code> |
| | |
| | ====Variables utilisables==== |
| | |
| | https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewritecond |
| |
| ==== Générer un certificat ==== | =====Générer un certificat===== |
| |
| Sous Redhat : | Sous Redhat : |
| =====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> |
| Syntax OK | Syntax OK |
| </code> | </code> |
| | * ''apache2ctl -M'' : lister les modules chargés |
| | |
| |
| ===== Divers ===== | ===== Divers ===== |