User Tools

Site Tools


notes:formation_webperso:rpsni

On n'a besoin d'un reverse proxy que dans le cas ou on n'a pas d'ipv6.
et comme tout le monde n'a pas encore ipv6 (il y a même des gens qui vont désactiver l'ipv6 sur leur machine…) on va mettre en place un reverse proxy:

il suffit d'installer par exemple un server nginx, que ce soit dans l'hyperviseur ou une machine virtuelle.

il est préférable d'installer le reverse proxy dans une machine virtuelle plutôt que dans l'hyperviseur de façon à faciliter les sauvegardes.

et dans mon cas j'ai choisi d'installer le reverse proxy dans la même machine qui fait serveur autoritaire de nom de domaine

dans mon cas les machines virtuelles ont de l'ipv6, donc les noms de domaines vont directement sur ces machines pour l'ipv6 donc pas besoin de reverse proxy sni pour l'ipv6.
le problème c'est que je n'ai qu'une seule ipv4 publique (la box de mon fournisseur d'accès à Internet) et que je suis obligé de partager cette unique ipv4 publique pour toutes mes machines virtuelles.
c'est pour permettre cette cohabitation que j'installe un reverse proxy sni.

avec l'ipv6, c'est simple: toutes les machines ont un accès direct à Internet et sont directement joignable depuis Internet, elles sont indépendantes et n'ont pas de problèmes de ports à partager donc pas de problèmes de traduction d'adresses.


reverse proxy sni

on installe le paquet nginx disponible dans Debian
aptitude install nginx

un seul fichier à éditer: /etc/nginx/nginx.conf

ce qui nous intéresse dans ce fichier c'est les streams et les backends

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
 
events {
        worker_connections 768;
        # multi_accept on;
}
 
 
#Les streams:                                                                                                                                                                                                                                                                                                                                                                           
 
stream {
 
        map $ssl_preread_server_name $name {
                ikce.numericore.com                     stream_backend_ikce.numericore.com;
          visio.ikce.numericore.com                     stream_backend_ikce.numericore.com;
              err404.numericore.com                   stream_backend_err404.numericore.com;
        visio.err404.numericore.com                   stream_backend_err404.numericore.com;
 
                default stream_backend_err404.numericore.com;
        }
# Les backends:
        upstream stream_backend_ikce.numericore.com { server 192.168.1.171:443; }
 
        #default backend:
        upstream stream_backend_err404.numericore.com { server 192.168.1.160:443; }
 
        server {
                listen  443;
                listen [::]:443;
                proxy_pass $name;
                # Le proxy_protocole ici casse le map plus haut
                proxy_protocol on;
                # indispensable
                ssl_preread on;
        }
}

on rajoute les blocs stream et backend avant le bloc http dans /etc/nginx/nginx.conf

les machines (virtuelles ou pas)

d'autre part il faudra modifier les fichiers nginx des machines concernées (dans mon cas c'est les machines ikce.numericore.com et err404.numericore.com)

dans err404.numericore.com:

on rajoute simplement proxy_protocol dans le segment server et uniquement pour le port 443
on ne touche pas au port 80
on ne touche pas à l'ipv6 vu que dans mon cas les machines ont de l'ipv6 public.

voici un extrait du fichier /etc/nginx/conf.d/err404.numericore.com.conf:

server {                                                                                                                                                                                      
    listen 443 ssl http2 proxy_protocol;                                                                                                                                                      
    listen [::]:443 ssl http2;                                                                                                                                                                
    server_name err404.numericore.com; 

lorsque on modifie le fichier de conf nginx, Yunohost ne va pas être content et refusera de les mettre à jour car ils auront étés modifiés

il faut faire pareil pour les autres machines virtuelles (ikce.numericore.com dans mon cas)

la box

et enfin sur la box il faut rediriger les ports 80 et 443 vers l'ip de la machine qui héberge le reverse proxy sni

fichiers complets

notes/formation_webperso/rpsni.txt · Last modified: 2023/12/17 20:51 by err404