Lorsque Nginx est placé derrière un reverse proxy, celui ci avec une configuration de base logera L’IP des visiteur avec celle du reverse proxy et non avec L’IP des visiteurs.
Cela peut poser des problèmes par exemple dans le cas ou vous utilisez Akismet comme anti-spam pour vos commentaires.
Pour cela, dans varnish ajouter après
sub vcl_recv { la ligne
set req.http.X-Forwarded-For = client.ip; puis dans la configuration Nginx, dans la configuration http, ajouter
[Lire]
Sécuriser la configuration Nginx pour WordPress
Configuration de base pour le CMS WordPress
server { listen 192.168.1.1:80 default_server; server_name _; listen: Configuration pour le vhost par default (les accès a des server_name inconu par Nginx arriveront dans ce vhost) server_name: _ indique le vhost par default, mettez vos ou votre server_name si vous voulez pas faire un vhost par default root /var/www/domaine.ltd/www; index index.php; N’oublier pas de modifier le “root”
location = /favicon.ico { allow all; log_not_found off; access_log off; } location = /robots.
[Lire]
Configurer php dans un alias
Dans le cas ou vous devez faire un alias, pour que l’exécution de php fonctionne, vous devez modifié le documentroot au niveau des paramètres fastcgi
Exemple :
root /var/www/somesite;
location /pma/ {
alias /usr/share/phpmyadmin/;
}
location ~ ^/pma/(.+\.php)$ {
alias /usr/share/phpmyadmin/$1;
include fastcgi_params;
fastcgi_pass php;
fastcgi_param DOCUMENT_ROOT /usr/share/phpmyadmin;
}
Gérer la mise en cache des fichiers static
Vous pouvez procéder de la manière suivante
location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
expires 24h;
log_not_found off;
}
Sécuriser vos Vhosts
Uniquement les requêtes GET HEAD et POST sont autorisé
if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } Pour ne pas loger les accès aux fichiers favicon.ico et robots.txt
location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } L’accès aux fichiers caché peuvent être dangereux tel qu’un .bash_history contant un mot de passe tapé par erreur ou un .my.cnf avec un compte MySQL, l’accès a tous les fichiers caché est donc interdit :
[Lire]
Utilisation de la compression gzip
Liste de paramètre possible pour activer la compression Gzip au niveau de “http”
gzip on;
gzip_min_length 1000;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6].(?!.*SV1)";
Configurer vos logs
Ajouter la ligne ci-dessous dans vos “server”, la variable $host reprend le hostname demandé
access_log /var/log/nginx/$host-access.log;
Pour configurer la rotation des logs sous FreeBSD, ajouter la ligne ci-dessous dans le fichier de configuration /etc/newsyslog.conf
/var/log/nginx/*.log www:root 640 7 * @T00 GJ /var/run/nginx.pid 30