Raspberry PI – Raspbian et reverse proxy Nginx

9 Mar 2016 par jj, Pas de commentaire »

Bonjour,

Si comme moi, vous commencez à avoir pas mal de services dispatché sur quelques serveurs et que vous en avez marre de router des ports vers ces différents services, voici la solution : le reverse proxy.

Je vais donc vous présenter comment installer et configurer Nginx en tant que reverse proxy.

Ce tuto est orienté Raspberry et Raspbian mais il fonctionnera également pour toutes les distributions à base de Debian (Ubuntu et consorts). Pour les autres distributions, vous n’aurez pas de mal à trouver comment installer Nginx (Par ex yum install nginx pour tous les système à base de RedHat/CentOs …)

Sans compter de l’avantage indéniable de ne plus router pleins de ports « non standard » pour accéder à tous vos services, vous augmenterez la sécurité :

-Non seulement vos différents services ne seront plus en frontaux sur le web

-Mais en plus si l’un de vos services ne supporte pas le SSL, votre reverse proxy lui supporte très bien le SSL et peut meme rediriger automatiquement toutes les requêtes http en https.

Le tunnel ssl ne sera pas du client vers le service mais du client vers le reverse proxy, la connexion entre le reverse proxy et le service qui ne gère pas le ssl sera en http.

Nous avons donc deux types de liaisons :

|client|<==HTTPS==>|REVERSE_PROXY|<==HTTPS==>|serveur|
|client|<==HTTPS==>|REVERSE_PROXY|<==HTTP==>|serveur|

Voici un shémas représentant un client voulant accéder au service01http.

Il ouvre donc son navigateur et tape : http://service01http.mondomaine.com

Mais une redirection s’effectue par le reverse proxy et dans son navigateur apparait l’adresse : https://service01http.mondomaine.com

Shemas Reverse Proxy NGINX

Passons maintenant au vif du sujet.

 

Installation de Nginx :

Ouvrez

apt-get install nginx

Génération d’un certificat SSL autosigné (ceci va permettre de ne pas avoir de connexion en clair,cela évite de pouvoir récupérer les identifiants/password en clair sur votre réseau) :

sudo openssl genrsa -out /etc/nginx/nginx.key 2048
sudo openssl req -new -key nginx.key -out /etc/nginx/nginx.csr
sudo openssl x509 -req -days 3650 -in /etc/nginx/nginx.csr -signkey /etc/nginx/nginx.key -out /etc/nginx/nginx.crt

 

Les hôtes virtuels :

Imaginons que nous avons 4 services web sur 3 serveurs :

-Serveur_01 : Service_01_HTTP

-Serveur_02 : Service_02_HTTPS

-Serveur_03 : Service_03_HTTP + Service_04_HTTPS

Nous allons donc créer 4 entrées DNS sur notre nom de domaine :

service01http.mondomaine.com

service02https.mondomaine.com

service03http.mondomaine.com

service04https.mondomaine.com

Imaginons maintenant que pour le service02https nous voulons y accéder par deux adresses différentes :

service02https.mondomaine.com
service02httpsbis.mondomaine.com

Le but est donc d’accéder à ces 4 services en HTTPS (peu importe que le service supporte ou non le SSL)

 

Configuration des hosts :

Nous allons donc commencer par configurer Nginx :

sudo nano /etc/nginx/sites-available/reverse

Collez ensuite ceci :

# Certificats SSL
ssl_certificate /etc/nginx/nginx.crt;
ssl_certificate_key /etc/nginx/nginx.key;

server {
        # Redirection des requetes en HTTP vers HTTPS
        # Port en entree
        listen 80;
        # Redirection vers
        return 301 https://$host$request_uri;
}

server {
        # service01http
        listen 443;
        # J'active SSL
        ssl on;

        server_name service01http.mondomaine.com; # entree DNS
        location / { # pour le dossier racine (/), on active le mode proxy vers l'adresse spécifiée, sur le port spécifié
                proxy_pass http://192.168.1.2:80/;
        }
}

server {
        # service02https et service02httpsbis
        listen 443;
        ssl on;

        # On peut spécifier 2 noms de domaine différents qui auront le même comportement
        server_name service02https.mondomaine.com;
        server_name service02httpsbis.mondomaine.com;
        location / {
                proxy_pass https://192.168.1.3:443/;
        }
}

server {
        # service03http
        listen 443;
        # J'active SSL
        ssl on;

        server_name service03http.mondomaine.com; # entree DNS
        location / { # pour le dossier racine (/), on active le mode proxy vers l'adresse spécifiée, sur le port spécifié
                proxy_pass http://192.168.1.4:80/;
        }
}

server {
        # service04https
        listen 443;
        # J'active SSL
        ssl on;

        server_name service04https.mondomaine.com; # entree DNS
        location / { # pour le dossier racine (/), on active le mode proxy vers l'adresse spécifiée, sur le port spécifié
                proxy_pass https://192.168.1.4:443/;
        }
}

 

Maintenant un petit restart et votre reverse proxy est maintenant en ligne !

sudo /etc/init.d/nginx restart

 

Petit ajout, si Nginx n’arrive pas a redémarrer, c’est peut être à cause de la longueur de votre entrée DNS (server_name)

Pour y remédier faites :

sudo nano /etc/nginx/nginx.conf

Puis cherchez la ligne :

         #server_names_hash_bucket_size 64;

Décommentez là en enlevant le # :

         server_names_hash_bucket_size 64;

Et vous pouvez maintenant redémarrer Nginx :

sudo /etc/init.d/nginx restart

 

 

 

Si vous avez des soucis ou des questions, n’hésitez pas les commentaires sont fait pour ça :)

 

Étiquettes : , , , ,

Réagissez

Raspberry Pi 2 ou 3 et Raspbian Jessie - VLC 2.4 et accélération matériel (hardware acceleration)

Raspberry Pi 2 ou 3 et Raspbian Jessie – VLC 2.4 et accélération matériel (hardware acceleration)

Aujourd’hui je vais à nouveau publier une mise à jour de l’article : Raspberry Pi 2 – VLC et accélération matériel (hardware [&hellip

Raspberry Pi 2 ou 3 et Raspbian Jessie - VLC 2.2 et accélération matériel (hardware acceleration)

Raspberry Pi 2 ou 3 et Raspbian Jessie – VLC 2.2 et accélération matériel (hardware acceleration)

UPDATE : Raspberry Pi 2 ou 3 et Raspbian Pixel – VLC 2.4 et accélération matériel (hardware acceleration) Aujourd’hui je vais [&hellip

Compilation de la derniere version de FFMPEG

Compilation de la derniere version de FFMPEG

Bonjour à tous, Aujourd’hui un petit tuto pour avoir la dernière version de ffmpeg, ce tutoriel à été utilisé maintes [&hellip

Raspberry Pi 2 - VLC et accélération matériel (hardware acceleration)

Raspberry Pi 2 – VLC et accélération matériel (hardware acceleration)

UPDATE : Raspberry Pi 3 et Raspbian Pixel – VLC 2.4 et accélération matériel (hardware acceleration) Ayant un petit projet de [&hellip

FFMPEG - Diffuser un flux ip multicast en adaptative smooth streaming

FFMPEG – Diffuser un flux ip multicast en adaptative smooth streaming

Un petit script bien utile pour délivrer un flux video multicast en adaptative smooth streaming

Installation de Transform Manager

Installation de Transform Manager

Prérequis – résumé : Télécharger Transform Manager Télécharger IIS Media Services 4.1 Télécharger IIS Managment console Télécharger .NET Framework 3.5 [&hellip

Suivez moi !

Follow Me! Follow Me! Follow Me! Follow Me!

Chercher