Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Nginx ReverseProxy LXC Alpine Linux

De Le Wiki de Lug

Installation d'un reverse proxy NGINX avec Certbot. Le container servira de point d'entrée pour les requêtes HTTP (port:80) et HTTPS (port:443) pour les rediriger sur les serveurs idoines en HTTPS uniquement. Certbot permettra de créer des certificat SSL reconnu par les navigateurs comme sécurisé.

Installation

On installe les paquets de base :

# apk update && apk upgrade
# apk add nginx certbot certbot-nginx

On modifie la configuration de NGINX pour la rapprocher du standard des grandes distributions :

# mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled

On modifie le fichier de configuration de NGINX en ajoutant la ligne suivante :

# vi /etc/nginx/nginx.conf
# Includes files with directives to load dynamic modules.                                                                                                                  
include /etc/nginx/modules/*.conf;                                                                                                                                         
include /etc/nginx/sites-enabled/*;

On supprime le site par défaut :

# rm /etc/nginx/conf.d/default.conf

On active le serveur :

# rc-update add nginx default
# service nginx start

Création d'un "vhost" sécurisé

Création du certificat

# certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email moncourriel@exemple.net -d site.exemple.net

Création du vhost

On crée le fichier de configuration dans "/etc/nginx/site-availables"

# vi /etc/nginx/sites-available/exemple.conf
server {
listen 80;
    listen [::]:80;
    server_name     site.exemple.net;
   # return 404;
    return 301 https://$host$request_uri;
}

server {
server_name     site.exemple.net;
    error_page 403  https://site.exemple.net;

    location / {
            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 https;
            proxy_set_header X-Forwarded-Port 443;
            proxy_pass http://IP_SERVEUR_WEB:PORT;
            # proxy_pass https://IP_SERVEUR_WEB:PORT; #Alternatif pour redirection sur https
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot


    ssl_certificate /etc/letsencrypt/live/site.exemple.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.exemple.net/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    add_header Strict-Transport-Security "max-age=31536000" always;
    ssl_trusted_certificate /etc/letsencrypt/live/site.exemple.net/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

server_tokens off;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";

}

Test et activation

On crée un lien symbolique du fichier de configuration dans le répertoire des site actifs :

# ln -s /etc/nginx/sites-available/exemple.conf /etc/nginx/sites-enabled/

On test la configuration :

# nginx -t

On recharge la configuration pour activation :

# service nginx reload