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 [[notes:formation_webperso:dns|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. {{ :notes:formation_webperso:rpsni:ipv4_vs_ipv6_reverse_proxy.svg |}} ====== 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:nginx.conf |-> /etc/nginx/nginx.conf}} {{ :notes:formation_webperso:rpsni:err404.numericore.com.conf |-> /etc/nginx/conf.d/err404.numericore.com.conf}}