Conserver l'IP du client derrière un reverse proxy

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