« Nginx ReverseProxy LXC Alpine Linux » : différence entre les versions
| Ligne 16 : | Ligne 16 : | ||
---- | ---- | ||
* Alpine Linux 3.12 : | * Alpine Linux 3.12 : | ||
... | <font color = grey>...</font> | ||
# Includes virtual hosts configs. | # Includes virtual hosts configs. | ||
include /etc/nginx/conf.d/*.conf; | include /etc/nginx/conf.d/*.conf; | ||
<font color = blue>include /etc/nginx/sites-enabled/*;</font> | <font color = blue>include /etc/nginx/sites-enabled/*;</font> | ||
... | <font color = grey>...</font> | ||
* Alpine Linux 3.13 : | * Alpine Linux 3.13 : | ||
... | <font color = grey>...</font> | ||
# Includes virtual hosts configs. | # Includes virtual hosts configs. | ||
include /etc/nginx/http.d/*.conf; | include /etc/nginx/http.d/*.conf; | ||
<font color = blue>include /etc/nginx/sites-enabled/*;</font> | <font color = blue>include /etc/nginx/sites-enabled/*;</font> | ||
... | <font color = grey>...</font> | ||
{{Méta bandeau | {{Méta bandeau | ||
| niveau = modéré | | niveau = modéré | ||
Version du 8 juin 2021 à 16:49
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 distributions type Debian :
# 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 :
- Alpine Linux 3.12 :
# rm /etc/nginx/conf.d/default.conf
- Alpine Linux 3.13 :
# 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 Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $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 X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://IP_SERVEUR_WEB:PORT;
# proxy_pass https://IP_SERVEUR_WEB:PORT; #Alternatif pour redirection sur https
#proxy_buffering off; #activer pour désactiver le "buffering"
}
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