====== Nginx ====== * [[letsencrypt:accueil|Let's Encrypt]] * [[nginx:logging-nginx|Stocker les logs Nginx en base de données]] * [[https://github.com/trimstray/nginx-quick-reference]] * https://nginxconfig.io/ * [[https://blog.adminrezo.fr/2019/02/durcissement-de-nginx-et-apache/]] * https://mozilla.github.io/server-side-tls/ssl-config-generator/ * [[https://geekeries.org/2019/06/authentification-par-certificat-client-sur-nginx/]] * [[https://blogduyax.madyanne.fr/2019/proxy-http-et-securite/]] * [[https://github.com/trimstray/nginx-admins-handbook/]] * [[https://www.tumfatig.net/2025/check-your-ip-infos-using-nginx/|Check your IP infos using nginx]] Évaluer la sécurité et les bonnes pratiques sur le serveur: * https://www.ssllabs.com * https://securityheaders.com * https://www.immuniweb.com * [[https://github.com/bunkerity/bunkerized-nginx]] * [[https://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html]] ==== Sécuriser une page avec un htpasswd ==== [[https://blog.nicolargo.com/2012/01/nginx-proteger-son-site-avec-une-authentification-simple-http.html|Source]] Installer le paquet ''apache2-utils''. Créer le fichier //.htpasswd// et créer l'utilisateur voulu: htpasswd -c /var/www/.htpasswd login Le paramètre ''-c'' permet de créer le fichier. Modifier le fichier de configuration du domaine Nginx en conséquence: location / { index index.html index.htm; auth_basic "Login"; auth_basic_user_file /var/www/.htpasswd; } # Protect hidden file to read/write access location ~ /\. { deny all; } Relancer Nginx. Il est possible de désactiver l'authentification pour une page en particulier : location /une/url/bien/precise/ { auth_basic off; } Ce bloc ''location'' doit être situé au même niveau que l'autre bloc qui contient l'instruction d'authentification, et doit aussi contenir les instructions pour traiter la requête (''proxy_pass'', etc). ==== Autoriser le listing d'un dossier ==== [[https://nginxlibrary.com/enable-directory-listing/|Source]] location /somedir { autoindex on; } ------- ==== Lister les modules de Nginx ==== [[https://serverfault.com/questions/223509/how-can-i-see-which-flags-nginx-was-compiled-with|Source]] 2>&1 nginx -V | tr ' ' '\n' ----- ==== Fancy Index ==== [[https://github.com/Naereen/Nginx-Fancyindex-Theme]] Ne pas mettre ''audoindex on;'' en même temps que ''fancyindex on;'' ! ------ ==== Cacher qu'il s'agit de Nginx ==== * [[https://blog.adminrezo.fr/2015/02/cacher-version-apache-nginx-php-fcgi/]] server_tokens off; # cache la version de Nginx more_set_headers "Server: Unknown"; # modifie l'en-tête Server ---- ==== Ne pas logger certaines requêtes ==== * [[https://www.tendenci.com/help-files/remove-errors-favicon-nginx-server-logs/]] * [[https://gist.github.com/kfl62/6049099]] * [[https://bjornjohansen.no/exclude-requests-from-nginx-access-log]] location ~* (/favicon.ico|/apple-touch-icon-precomposed.png|/apple-touch-icon.png|/robots.txt) { access_log off; log_not_found off; } === Selon le user-agent === Pour ne pas logger les requêtes faites par les User-Agents commençant par //HetrixTools// : # en-dehors du bloc server : map $http_user_agent $loggable { ~^HetrixTools 0; default 1; } # dans le bloc server : access_log /var/log/nginx/access.log combined if=$loggable; ==== Refuser certains User Agents ==== * [[https://www.unixteacher.org/blog/blocking-access-by-user-agent-in-nginx/]] * [[http://nginx.org/en/docs/http/ngx_http_map_module.html]] Dans le bloc ''http'' du fichier ''/etc/nginx/nginx.conf'': include /etc/nginx/blacklist; Dans le fichier ''/etc/nginx/blacklist'': map $http_user_agent $block_ua { default 0; ~*profound 1; ~*scrapyproject 1; ~*netcrawler 1; ~*nmap 1; ~*sqlmap 1; ~*slowhttptest 1; ~*nikto 1; "~*jersey avec espace" 1; ~*brandwatch 1; ~*magpie-crawler 1; ~*mechanize 1; ~*python-requests 1; ~*redback 1; } Dans les virtual hosts (section ''http''): if ($block_ua) { return 444; } Les erreurs 444 sont logguées dans ''/var/log/nginx/access.log''.