« Nginx ReverseProxy LXC Alpine Linux » : différence entre les versions
Aller à la navigation
Aller à la recherche
| Ligne 24 : | Ligne 24 : | ||
| texte = Exemple avec "'''site.exemple.net'''" | | texte = Exemple avec "'''site.exemple.net'''" | ||
}} | }} | ||
==Création du certificat== | |||
# certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email <font color = green>moncourriel@exemple.net</font> -d <font color = green>site.exemple.net</font> | |||
==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 <font color = green>site.exemple.net</font>; | |||
# return 404; | |||
return 301 <nowiki>https://</nowiki>$host$request_uri; | |||
} | |||
server { | |||
server_name <font color = green>site.exemple.net</font>; | |||
error_page 403 https://<font color = green>site.exemple.net</font>; | |||
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://<font color = green>IP_SERVEUR_WEB:PORT</font>; | |||
# proxy_pass http<font color = red>s</font>://<font color = green>IP_SERVEUR_WEB:PORT</font>; #Alternatif pour redirection sur https | |||
} | |||
listen [::]:443 ssl; # managed by Certbot | |||
listen 443 ssl; # managed by Certbot | |||
ssl_certificate /etc/letsencrypt/live/<font color = green>site.exemple.net</font>/fullchain.pem; | |||
ssl_certificate_key /etc/letsencrypt/live/<font color = green>site.exemple.net</font>/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/<font color = green>site.exemple.net</font>/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"; | |||
} | |||
Version du 20 avril 2021 à 16:27
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";
}