INSTALLATION ET CONFIGURATION D’UN REVERSE PROXY AVEC NGINX

Un reverse proxy, est un serveur généralement placé en frontal des serveurs web. Un utilisateur qui va vouloir accéder à un des vos site web va passer par le reverse proxy. Grâce au reverse-proxy, le serveur web est protégé des attaques directes depuis l’extérieur, ce qui renforce la sécurité des serveurs web interne. D’autre part, la fonction de cache du reverse-proxy peut soulager la charge du serveur web principal. Dans ce cas, je vais vous montrer comment mettre en place cette solution.

1 – Installation de NGINX

aptitude install nginx

2 – Configuration

Le fichier de configuration principal se trouve dans /etc/nginx, il se nomme nginx.conf

Se déplacer dans le dossier nginx

cd /etc/nginx

Faire une copie du fichier original

cp nginx.conf nginx.conf.orignal

Éditer le fichier nginx.conf

nano nginx.conf

Modifier le fichier comme suit

user www-data;
# correspond au nombre de cœurs 
worker_processes 4; 
pid /var/run/nginx.pid;

events {
	worker_connections 1024;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings : Active la compression des pages sauf pour les vieux navigateurs
	##

	gzip on;
	gzip_disable "msie6";

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

 2-1 Création des règles proxy

Les règles se configurent dans /etc/nginx/site-available je vais utiliser le fichier par défaut.

Se déplacer dans le dossier qui contient les fichiers de configuration

/etc/nginx/sites-available

Faire une copie du fichier avant de le modifier

cp default default.original

Supprimer le contenu du fichier et le remplacer par le suivant

server {
        listen   80;
        server_name     test.fr;
        location / {
                proxy_pass         http://192.168.20.5/;
        }
}

server {
        listen   80;
        server_name     exemple2.test.fr;
        location / {
                proxy_pass         http://192.168.20.6/exemple2/;
        }
}

Une fois les redirections faites, redémarrer le services nginx

/etc/init.d/nginx restart

 2-2 Redirection HTTPs

Installation d’OpenSSL

aptitude install openssl

Création d’un certificat

openssl req -new -x509 -nodes -out server.crt -keyout server.key
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:FRANCE
Locality Name (eg, city) []:VOTREVILLE
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NOMDEVOTRESOCIETE
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:NOM.DE.VOTRE.DOMAINE
Email Address []:VOTRE.ADRESSE.EMAIL

Copie des certificats

cp server.crt server.key /etc/nginx/

 2-2-3 Règles HTTPs

Les règles pour SSL se configurent sur le même fichier.

Se déplacer dans le dossier qui contient les fichiers de configuration

/etc/nginx/sites-available

Faire une copie du fichier avant de le modifier

nano default

Ajouter les lignes suivantes

server {
        listen   443;
        server_name     exemple3.test.fr;
        ssl on;
	ssl_certificate /etc/nginx/server.crt;
	ssl_certificate_key /etc/nginx/server.key;
	ssl_session_timeout 15m;

        location / {
                proxy_pass         http://192.168.20.6/exemple3/;
        }
}

server {
        listen   80;
        server_name     test.fr;
        location / {
                proxy_pass         http://192.168.20.5/;
        }
}

server {
        listen   80;
        server_name     exemple2.test.fr;
        location / {
                proxy_pass         http://192.168.20.6/exemple2/;
        }
}

Une fois les redirections faites, redémarrer le services nginx

/etc/init.d/nginx restart