Installer un reverse proxy Nginx

février 22, 2016 3:39 Publié par Laissez vos commentaires

Bonjour à tous,

Dans ce tutoriel, nous allons apprendre à installer Un reverse proxy Nginx (Engine X) sur un distribution linux Debian 8 ({frontend}) afin de filtrer l’accès aux sites web hébergés sur un serveur apache ({backend}).

Installation :

apt-get install nginx
apt-get install php5-fpm

systemctl enable nginx.service

Fichier de configuration nginx

Avant toute modification du fichier de conf principal, veuillez faire une sauvegarde :

cd /etc/nginx/
cp nginx.conf nginx.conf.bak

Règles de proxy

Création du fichier proxy.conf

nano /etc/nginx/proxy.conf

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;


Les fichiers de configuration des règles de proxy se situent dans le dossier :

cd /etc/nginx/sites-available

Faites une sauvegarde de fichier default puis éditez le en suivant l’exemple ci dessous, dans lequel les requêtes sont redirigées vers le serveur apache 192.168.1.1 sur le port 8080 :

nano default

# site1.com
server {
        listen   80;
        server_name    site1.com;
        location / {
                proxy_pass         http://192.168.1.1:8080/;
        }
}

Configuration du serveur apache

Installation du mod remoteip (afin qu’apache puisse conserver l’ip d’origine du client, et non l’ip du reverse proxy)

cd /usr/local/src
wget https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/metadata/mod_remoteip.c

installation des paquets nécessaires à la compilation des modules apache

yum install httpd-devel

Compilation de remoteip :

apxs -n remoteip -cia mod_remoteip.c

Ajout des lignes suivantes dans le fichier httpd.conf (Remplacez x par l’adresse du reverse proxy nginx)

nano /etc/httpd/conf/httpd.conf
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy x.x.x.x/24 

Nous allons ensuite faire en sorte que le serveur apache écoute sur le port 8080, port sur lequel les requêtes du rproxy seront envoyées. Sous Centos, repérez la ligne {Listen 80} du fichier httpd.conf

nano /etc/httpd/conf/httpd.conf
Listen 8080

Configuration des Virtual Hosts Apache (Dénommés Server Blocks Nginx )

Création d’une nouvelle règle :

nano /etc/nginx/sites-available/site2.com.conf

server {
    listen 80;
    server_name site2.com www.site2.com;

    location / {
        proxy_pass http://192.168.1.1:8080;
        include /etc/nginx/proxy.conf;
    }
}

Activation du virtual host

ln -s /etc/nginx/sites-available/site2.com.conf /etc/nginx/sites-enabled/site2.com.conf

Serveur Apache :
Sur votre serveur apache, configurez votre virtual host pour qu’il écoute sur le port 8080 :

nano /etc/httpd/conf.d/site2.com.conf

    ServerName www.site2.com
    ServerAlias site2.com
    DocumentRoot /var/www/site2.com
    ErrorLog /var/www/site2.com/error.log
    CustomLog /var/www/site2.com/requests.log combined

Dernière chose, pour afficher l’IP distante dans les logs d’apache, vous devez modifier le fichier httpd.conf :

Remplacer la ligne suivante :
 #LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
 LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

 

Fini!

Vous pouvez suivre le tutoriel suivant pour la configuration SSL :

Nginx – configuration SSL

Classés dans :

Cet article a été écrit par admin

Laisser un commentaire