Aller au contenu

Reverse Proxy

Prérequis

Bash
apt update &&  apt install certbot python3-certbot-nginx -y # seulement si besoin de certificat HTTPS

Installation

Bash
apt update && apt install nginx -y

Configuration

Configuration HTTP

Tout se passe dans un seul fichier :

Bash
nano /etc/nginx/sites-available/default

Exemple de configuration :

Text Only
# SERVICE
server {
        listen  80;
        listen  [::]:80;
        server_name     service.test.fr;

        location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade; # nécessaire pour usage comme VNC, ne pas mettre si pas besoin
                proxy_set_header Connection 'upgrade'; # nécessaire pour usage comme VNC, ne pas mettre si pas besoin
                proxy_cache_bypass $http_upgrade; # nécessaire pour usage comme VNC, ne pas mettre si pas besoin
                proxy_pass http://ip-du-serveur:port-du-service;
        }
}

Vérification

Vérifier la syntaxe du fichier à l'aide la commande suivante

Bash
nginx -t

Appliquer la configuration

Bash
systemctl reload nginx.service

Configuration HTTPS

Génération d'un certificat Let's encrypt

Bash
certbot --nginx -d service.test.fr

Modification du fichier de configuration

Certbot modifie le fichier de configuration "/etc/nginx/sites-available/default", venir remplacer les valeurs par les nôtres

Bash
nano /etc/nginx/sites-available/default

Exemple de configuration :

Text Only
# SERVICE
server {
        listen  80;
        listen  [::]:80;
        server_name     service.test.fr;

        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        ssl_certificate /etc/letsencrypt/live/service.test.fr/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/service.test.fr/privkey.pem;
        server_name     service.test.fr;

        location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade; # nécessaire pour usage comme VNC, ne pas mettre si pas besoin
                proxy_set_header Connection 'upgrade'; # nécessaire pour usage comme VNC, ne pas mettre si pas besoin
                proxy_cache_bypass $http_upgrade; # nécessaire pour usage comme VNC, ne pas mettre si pas besoin
                proxy_pass http://ip-du-serveur:port-du-service;
        }
}

Vérification

Vérifier la syntaxe du fichier à l'aide la commande suivante

Bash
nginx -t

Appliquer la configuration

Bash
systemctl reload nginx.service

Activer le service au démarrage

Bash
systemctl enable nginx.service --now