Installer un reverse proxy Nginx
février 22, 2016 3:39 Laissez vos commentairesBonjour à 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 :
Classés dans :Linux
Cet article a été écrit par admin