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 problemes par exemple dans le cas ou vous utilisez Akismet comme antispam pour vos commentaires. Pour cela, dans varnish ajouter apres sub vcl_recv { la ligne set req.http.X-Forwarded-For = client.ip; puis dans la configuration Nginx, dans la configuration http, ajouter [Voir plus]

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 defaut (les acces a des server_name inconu par Nginx arriveront dans ce vhost) server_name: _ indique le vhost par defaut, mettez vos ou votre server_name si vous voulez pas faire un vhost par defaut. 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. [Voir plus]

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’acces 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 : [Voir plus]

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]. [Voir plus]

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