From fbbd510ada2039a6ff6f91076ed350b92f30d930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Mon, 21 Jul 2025 13:21:26 +0400 Subject: [PATCH] feat: add nginx configuration example --- README.md | 20 ++++++++++ nginx.conf.sample | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 nginx.conf.sample diff --git a/README.md b/README.md index 3d712ec..82e8114 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ kaubuntu.re est une interface web responsive qui permet de consulter et recherch ├── robots.txt.sample # Exemple de robots.txt ├── mentions-legales.php.sample # Exemple de mentions légales ├── .htaccess.sample # Exemple de configuration Apache sécurisée +├── nginx.conf.sample # Exemple de configuration Nginx sécurisée └── README.md ``` @@ -158,6 +159,25 @@ cp .htaccess.sample .htaccess **⚠️ Important :** Cette configuration est essentielle pour la sécurité de votre installation. Ne pas l'utiliser expose vos fichiers de configuration aux visiteurs. +## 🛡️ Configuration de sécurité Nginx + +Pour les serveurs Nginx, utilisez le fichier `nginx.conf.sample` qui inclut les mêmes protections : + +### Protections incluses : +- 🚫 **Blocage des fichiers de configuration** : Empêche l'accès direct aux fichiers sensibles +- 🔒 **Protection des répertoires sensibles** : Bloque l'accès aux dossiers critiques +- 🗂️ **Désactivation de l'exploration** : `autoindex off` +- 🔐 **Blocage des fichiers cachés** : Protection des fichiers commençant par `.` +- 📄 **Optimisations** : Cache, compression gzip, headers de sécurité + +### Installation : +```bash +# Adaptez les chemins dans nginx.conf.sample puis : +sudo cp nginx.conf.sample /etc/nginx/sites-available/votre-site +sudo ln -s /etc/nginx/sites-available/votre-site /etc/nginx/sites-enabled/ +sudo nginx -t && sudo systemctl reload nginx +``` + ## 📱 Progressive Web App (PWA) Cette plateforme est une PWA complète offrant : diff --git a/nginx.conf.sample b/nginx.conf.sample new file mode 100644 index 0000000..59c8776 --- /dev/null +++ b/nginx.conf.sample @@ -0,0 +1,96 @@ +server { + listen 80; + server_name votre-domaine.com; + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + server_name votre-domaine.com; + root /path/to/your/site; + index index.php index.html; + + # SSL Configuration (adaptez selon votre certificat) + ssl_certificate /path/to/your/certificate.crt; + ssl_certificate_key /path/to/your/private.key; + + # ====================== + # SÉCURITÉ + # ====================== + + # Bloquer l'accès aux fichiers de configuration + location ~* \.(php|inc|conf|config|local)$ { + deny all; + return 404; + } + + # Protéger les répertoires sensibles + location ~ ^/(includes|cache|docs)/ { + deny all; + return 404; + } + + # Bloquer les fichiers samples et backups + location ~* \.(sample|bak|backup|log|tmp)$ { + deny all; + return 404; + } + + # Bloquer l'accès aux fichiers cachés + location ~ /\. { + deny all; + return 404; + } + + # Empêcher l'exploration des répertoires + autoindex off; + + # ====================== + # RÉÉCRITURE D'URL + # ====================== + + # Masquer l'extension .php et redirection + location / { + try_files $uri $uri/ @rewrite; + } + + location @rewrite { + rewrite ^/([^.]+)$ /$1.php last; + } + + # Rediriger les URLs avec .php vers les URLs sans extension + location ~ ^/(.+)\.php$ { + return 301 /$1; + } + + # Traitement des fichiers PHP + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Adaptez selon votre version PHP + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + } + + # ====================== + # OPTIMISATIONS + # ====================== + + # Cache des fichiers statiques + location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + access_log off; + } + + # Compression gzip + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json; + + # Headers de sécurité + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; +} \ No newline at end of file