« Nginx ReverseProxy LXC Alpine Linux » : différence entre les versions
| Ligne 6 : | Ligne 6 : | ||
# apk add nginx certbot certbot-nginx | # apk add nginx certbot certbot-nginx | ||
On modifie la configuration de NGINX pour la rapprocher du standard des grandes distributions : | On modifie la configuration de NGINX pour la rapprocher du standard des grandes distributions : | ||
{{Méta bandeau | |||
| niveau = information | |||
| icône = important | |||
| texte = Optionnel, risque d'être supprimé et à recréer en cas de MAJ importante, sinon utiliser le répertoire /etc/nginx/conf.d/ (Alpine 3.12) ou /etc/nginx/http.d/ (Alpine 3.13) | |||
}} | |||
# mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled | # mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled | ||
On modifie le fichier de configuration de NGINX en ajoutant la ligne suivante : | On modifie le fichier de configuration de NGINX en ajoutant la ligne suivante : | ||
| Ligne 30 : | Ligne 35 : | ||
On supprime le site par défaut : | On supprime le site par défaut : | ||
# rm /etc/nginx/conf.d/default.conf | # rm /etc/nginx/conf.d/default.conf | ||
# rm /etc/nginx/http.d/default.conf | |||
On active le serveur : | On active le serveur : | ||
# rc-update add nginx default | # rc-update add nginx default | ||
Version du 25 avril 2021 à 16:50
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
- Alpine Linux 3.12 :
...
# Includes virtual hosts configs.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
...
- Alpine Linux 3.13 :
...
# Includes virtual hosts configs.
include /etc/nginx/http.d/*.conf;
include /etc/nginx/sites-enabled/*;
...
On supprime le site par défaut :
# rm /etc/nginx/conf.d/default.conf # rm /etc/nginx/http.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