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 ou un conteneur plutôt que dans l'hyperviseur de façon à faciliter les sauvegardes.
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.
on installe le paquet nginx
disponible dans Debian
apt install nginx
éventuellement il fudra installer le module nginx stream au cas ou ça ne serait pas déjà fait:
apt install libnginx-mod-stream
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
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)
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