| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| serveurs:installation:web-srv:nginx [2022/02/10 17:25] – [Modification du format des logs] jpmilcent | serveurs:installation:web-srv:nginx [2023/08/03 13:47] (Version actuelle) – [Ajouter le support de GeoIp] jpmilcent |
|---|
| |
| ===== Installation ===== | ===== Installation ===== |
| * Installer //Nginx// et //Certbot// : ''sudo aptitude install supervisor nginx python3-certbot-nginx python3-certbot-dns-ovh '' | * Installer //Nginx// et //Certbot// : ''sudo apt install nginx python3-certbot-nginx python3-certbot-dns-ovh '' |
| * Activer le redémarrage automatique du service : ''systemctl enable nginx.service'' | * Activer le redémarrage automatique du service : ''systemctl enable nginx.service'' |
| * Activer le démarrage automatique du service Systemd lançant deux fois par jour ''certbot renew'' : ''systemctl enable certbot.timer'' | * Activer le démarrage automatique du service Systemd lançant deux fois par jour ''certbot renew'' avec : ''systemctl enable certbot.timer'' |
| * Vérifier le status et démarrer le service si nécessaire : ''systemctl status certbot.timer'' | * Vérifier le status et démarrer le service si nécessaire : ''systemctl status certbot.timer'' |
| |
| ===== Modification du format des logs ===== | ===== Modification du format des logs ===== |
| Modifier les logs d'accès (ajout d'infos) pour Telegraf et GoAccess : | Modifier les logs d'accès (ajout d'infos) pour Telegraf et GoAccess : |
| * Éditer la conf de Nginx ''vi /etc/nginx/nginx.conf'' et remplacer la section Log contenant :<code nginx> | * Éditer la conf de Nginx ''vi /etc/nginx/nginx.conf'' et remplacer dans la section ''http {...}'' contenant :<code nginx> |
| access_log /var/log/nginx/access.log; | access_log /var/log/nginx/access.log; |
| error_log /var/log/nginx/error.log; | |
| </code> | </code> |
| * Par le contenu suivant : <code nginx> | * Par le contenu suivant : <code nginx> |
| |
| access_log /var/log/nginx/access.log enhanced-fmt; | access_log /var/log/nginx/access.log enhanced-fmt; |
| error_log /var/log/nginx/error.log; | |
| </code> | </code> |
| **ATTENTION** : vérifier la présence du nom de domaine de l'hôte virtuel dans les logs d’accès. | **ATTENTION** : vérifier la présence du nom de domaine de l'hôte virtuel (''$host'') dans les logs d’accès. |
| ===== Configuration de la compression ===== | ===== Configuration de la compression ===== |
| Activer la compression Gzip du contenu renvoyé par Nginx pour tous les types Mime (JS, CSS...) : | Activer la compression Gzip du contenu renvoyé par Nginx pour tous les types Mime (JS, CSS...) : |
| ===== Ajouter le support de GeoIp ===== | ===== Ajouter le support de GeoIp ===== |
| * Vérifier le support de GeoIp par Ngninx : ''nginx -V 2>&1 | grep -o with-http_geoip_module'' | * Vérifier le support de GeoIp par Ngninx : ''nginx -V 2>&1 | grep -o with-http_geoip_module'' |
| * GeoIP n'est plus maintenu => geoip2 dont le module et le support dans Nginx nécessite [[https://github.com/leev/ngx_http_geoip2_module#user-content-download-maxmind-geolite2-database-optional|la compilation du module]] | * GeoIP n'est plus maintenu => geoip2 dont le module et le support dans Nginx nécessite [[https://github.com/leev/ngx_http_geoip2_module#user-content-download-maxmind-geolite2-database-optional|la compilation du module]] mais depuis Debian 11 un module ''GeoIP2'' existe dans [[https://packages.debian.org/bullseye/nginx-full| le paquet pour la version Debian 11 Bullseye]]. |
| * À voir plus tard... | * Debian 11+ : installer le module avec : ''apt install libnginx-mod-http-geoip2'' |
| * Apparemment, un module ''GeoIP2'' existe dans [[https://packages.debian.org/bullseye/nginx-full| le paquet pour la version Debian 11 Bullseye]]. A voir lors de la mise à jour vers Debian 11. | |
| |
| ===== Ajouter le support des fichiers d'authentification HTTP ===== | ===== Ajouter le support des fichiers d'authentification HTTP ===== |
| * Installer le paquet suivant : ''aptitude install apache2-utils'' | * Installer le paquet suivant : ''apt install apache2-utils'' |
| * Pour créer une fichier //.htpasswd// : ''htpasswd -c /etc/nginx/.htpasswd <user-name-1>'' | * Pour créer une fichier //.htpasswd// : ''htpasswd -c /etc/nginx/.htpasswd <user-name-1>'' |
| * Ensuite, pour ajouter des utilisateurs (sans l'option ''-c'') : ''htpasswd /etc/nginx/.htpasswd <user-name-2>'' | * Ensuite, pour ajouter des utilisateurs (sans l'option ''-c'') : ''htpasswd /etc/nginx/.htpasswd <user-name-2>'' |
| * https://www.ssllabs.com/ssltest/analyze.html?d=<domaine-principal> | * https://www.ssllabs.com/ssltest/analyze.html?d=<domaine-principal> |
| * https://www.ssllabs.com/ssltest/analyze.html?d=<alias-du-domaine-principal> | * https://www.ssllabs.com/ssltest/analyze.html?d=<alias-du-domaine-principal> |
| * Exemple de fichier de conf Nginx contenant la redirection HTTP vers HTTPS (en 302 afin d'éviter d'éventuel problème de mise en cache par les navigateurs toujorus difficile à résoudre) et le HTTP2 : <code nginx> | * Exemple de fichier de conf Nginx contenant la redirection HTTP vers HTTPS (en 302 afin d'éviter d'éventuel problème de mise en cache par les navigateurs toujours difficile à résoudre) et le HTTP2 : <code nginx> |
| server { | server { |
| listen 443 ssl http2; | listen 443 ssl http2; |