====== 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''.