« Nginx ReverseProxy LXC Alpine Linux » : différence entre les versions

De Le Wiki de Lug
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
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 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 =
= Installation =
Ligne 5 : Ligne 5 :
  # apk update && apk upgrade
  # apk update && apk upgrade
  # 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
{{Méta bandeau
   | niveau = information
   | niveau = information
Ligne 12 : Ligne 12 :
  }}
  }}
  # 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 :
  # vi /etc/nginx/nginx.conf
  # vi /etc/nginx/nginx.conf
----
----
Ligne 100 : Ligne 100 :
   | niveau = information
   | niveau = information
   | icône = loupe
   | icône = loupe
   | texte  = Ainsi pour désactiver et conserver le fichier de configuration d'un site on ne supprime que le lien symbolique et on recharge NGINX.
   | texte  = Ainsi pour désactiver et conserver le fichier de configuration d'un site on ne supprime que le lien symbolique et on recharge Nginx.
  }}
  }}
{{Méta bandeau
{{Méta bandeau

Version du 19 mai 2021 à 22:21

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 :

  • 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 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