Apache2, Pure-FTPd, VSFTPd, LDAP, Samba, Active Directory

 Charge moyenne sur 1mn : 0.21 Charge moyenne sur 5mn : 0.39 Charge moyenne sur 15mn : 0.51




Site user blocks : Account info / user rights / summary

Identify yourself

Authenticate with your ZW3B account and take advantage of member services.

Username :
Password :
  
  

Howto Apache2 - Module proxy

  • Howto Apache2 - Module proxy
Rediriger les requêtes Web vers différents serveurs Web grâce au module proxy d'Apache.

Informations :

Dates
  • Publish : : Wednesday 28 december 2011
  • Modification : Thursday 28 june 2012

Share :

La situation suivante : 1 seule adresse InterNet avec le souhait de pouvoir accéder sur le port web par default (80) à plusieurs serveurs Web du réseau local toujours sur le port 80.

En clair : Plusieurs serveurs Web sur une seule IP interNet.

  • 1 IP InterNet : 1.2.3.4 (le routeur ou la passerelle Linux)
  • 1 serveur Web sur la machine : 192.168.10.1 pour un domaine.
  • 1 serveur Web sur la machine : 192.168.10.2 pour un autre domaine.

Installer Apache2 et les modules

Script avec 2 lignes

001root@proxy:~# aptitude install apache2 apache2-utils libapache2-mod-geoip libapache2-mod-auth-pam libapache2-mod-auth-openid
002  

Activer les modules

Script avec 2 lignes

001root@proxy:~# a2enmod proxy_http && a2enmod proxy_connect && a2enmod headers && a2enmod rewrite && a2enmod php5
002  

Vérifier la configuration du modules proxy

On édite vim /etc/apache2/mods-enabled/proxy.conf

Script avec 9 lignes

001<IfModule mod_proxy.c>
002    ProxyRequests Off
003    <Proxy *>
004        AddDefaultCharset off
005        Order deny,allow
006        Deny from all
007    </Proxy>
008    ProxyVia On
009</IfModule>

Configuration des virtual-hosts

On édite ou crée vim /etc/apache2/sites-available/proxy.domaine1.fr.conf qui pointera sur la machine 192.168.10.1

Script avec 26 lignes

001<VirtualHost 10.92.120.10:80>
002    ServerAdmin roots at zw3b dot fr
003
004    ServerName proxy.domaine1.fr
005    ServerAlias domaine1.fr *.domaine1.fr
006
007    ErrorLog /var/log/apache2/proxy.domaine1.fr.error.log
008    Customlog /var/log/apache2/proxy.domaine1.fr.access.log combined
009    LogLevel warn
010    
011    Order deny,allow
012    Allow from all
013
014    ProxyPass / http://192.168.10.1/
015    ProxyPassReverse / http://192.168.10.1/
016    ProxyPreserveHost On
017    ProxyRequests Off
018    ProxyVia On
019    SetEnv force-proxy-request-1.0 1
020    SetEnv proxy-nokeepalive 1
021
022#   RequestHeader   unset   Accept-Encoding
023#   Header unset "WWW-Authenticate: NTLM"
024#   Header add WWW-Authenticate "Basic realm=proxy.domaine1.fr"
025</VirtualHost>
026  

On édite ou crée vim /etc/apache2/sites-available/proxy.domaine2.fr.conf qui pointera sur la machine 192.168.10.2

Script avec 27 lignes

001<VirtualHost 10.92.120.10:80>
002    ServerAdmin roots at zw3b dot fr
003
004    ServerName proxy.domaine2.fr
005    ServerAlias domaine2.fr *.domaine2.fr
006
007    ErrorLog /var/log/apache2/proxy.domaine2.fr.error.log
008    Customlog /var/log/apache2/proxy.domaine2.fr.access.log combined
009    LogLevel warn
010    
011    Order deny,allow
012    Allow from all
013
014    ProxyPass / http://192.168.10.2/
015    ProxyPassReverse / http://192.168.10.2/
016    ProxyPreserveHost On
017    ProxyRequests Off
018    ProxyVia On
019    SetEnv force-proxy-request-1.0 1
020    SetEnv proxy-nokeepalive 1
021
022#   RequestHeader   unset   Accept-Encoding
023#   Header unset "WWW-Authenticate: NTLM"
024#   Header add WWW-Authenticate "Basic realm=proxy.domaine2.fr"
025
026</VirtualHost>
027  

Pour loguer le nom des Hosts (le ServerAlias et non ServerName)

Ajouter celà "%{Host}i:%p" au LogFormat pour inscrire dans le fichier access.log le nom des Hosts (le ServerAlias) que l'internaute passe dans son URL.

Script avec 1 ligne

001LogFormat "%h "%{Host}i:%p" %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_alias_combined

Puis modifier la ligne

Script avec 1 ligne

001Customlog /var/log/apache2/proxy.domaine1.fr.access.log combined

par celle-ci :

Script avec 1 ligne

001Customlog /var/log/apache2/proxy.domaine1.fr.access.log vhost_alias_combined

On active les virtual-hosts et on reload notre serveur Apache

Script avec 2 lignes

001root@proxy:~# a2ensite proxy.domaine1.fr.conf && a2ensite proxy.domaine2.fr.conf  
002  /etc/init.d/apache2 {start|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}

Voilà, les requetes Web pour *.domaine1.fr seront envoyées vers la machine 192.168.10.1 et celles pour *.domaine2.fr seront envoyées vers la machine 192.168.10.2


Tiens sinon j'ajoute cela rapidement : Ayant activé le mod_proxy d'apache j'avais l'adresse IP de la machine elle-même (REMOTE_ADDR), il a fallu simplement changer sur la ligne LogFormat, et remplacer la variable %h par {X-Forwarded-For}i du fichier /etc/apache2/apache.conf des serveurs Apache derrière l'apache en mod_proxy

Script avec 1 ligne

001#LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combinedLogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

De ce fait, j'ai soit l'IPv4, soit l'IPv6 dans mes access.log d'apache





Translate this page with Google

Author of the page

O.Romain.Jaillet-ramey

O.Romain.Jaillet-ramey

  • Firstname : Olivier Romain Luc
  • Lastname : : Jaillet-ramey
  • Arrived on tuesday 19 october 1976 (1976/10/19 00:00)
    44 years activity !

Firefox Nighlty

Our friends from Framasoft are interested in Mozilla and asked them questions about Nightly: Firefox Night-club, free entry !






Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready