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

 Charge moyenne sur 1mn : 0.78 Charge moyenne sur 5mn : 0.41 Charge moyenne sur 15mn : 0.39




Blocs utilisateurs du site : Infos du compte / droits utilisateurs / récapitulatif

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

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

Activer les modules

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

Vérifier la configuration du modules proxy

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

<IfModule mod_proxy.c>
    ProxyRequests Off
    <Proxy *>
        AddDefaultCharset off
        Order deny,allow
        Deny from all
    </Proxy>
    ProxyVia On
</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

<VirtualHost 10.92.120.10:80>
    ServerAdmin roots at zw3b dot fr

    ServerName proxy.domaine1.fr
    ServerAlias domaine1.fr *.domaine1.fr

    ErrorLog /var/log/apache2/proxy.domaine1.fr.error.log
    Customlog /var/log/apache2/proxy.domaine1.fr.access.log combined
    LogLevel warn
    
    Order deny,allow
    Allow from all

    ProxyPass / http://192.168.10.1/
    ProxyPassReverse / http://192.168.10.1/
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyVia On
    SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1

#   RequestHeader   unset   Accept-Encoding
#   Header unset "WWW-Authenticate: NTLM"
#   Header add WWW-Authenticate "Basic realm=proxy.domaine1.fr"
</VirtualHost>
  

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

<VirtualHost 10.92.120.10:80>
    ServerAdmin roots at zw3b dot fr

    ServerName proxy.domaine2.fr
    ServerAlias domaine2.fr *.domaine2.fr

    ErrorLog /var/log/apache2/proxy.domaine2.fr.error.log
    Customlog /var/log/apache2/proxy.domaine2.fr.access.log combined
    LogLevel warn
    
    Order deny,allow
    Allow from all

    ProxyPass / http://192.168.10.2/
    ProxyPassReverse / http://192.168.10.2/
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyVia On
    SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1

#   RequestHeader   unset   Accept-Encoding
#   Header unset "WWW-Authenticate: NTLM"
#   Header add WWW-Authenticate "Basic realm=proxy.domaine2.fr"

</VirtualHost>
  

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.

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

Puis modifier la ligne

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

par celle-ci :

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

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

root@proxy:~# a2ensite proxy.domaine1.fr.conf && a2ensite proxy.domaine2.fr.conf  
  /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

#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