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.txt      {   allow all;  log_not_found off;  access_log off; }

On désactive les log et on ne log pas les not found pour ces deux fichiers

  location ~ /\.              {   deny all;   log_not_found off;  access_log off; }
  location ~ wp-config.php    {   deny all;   log_not_found off;  access_log off; }

bloque l’accès aux fichiers commençant par un point et au fichier de conf (non négociable ! 🙂 )

  location ~ ^/wp-content {
    deny all;
    location ~ .(xml|css|jpe?g|png|gif|js)$ {
      allow all;
    }
  }

Autorise l’accès uniquement aux extensions correspondant a la regex dans intégralité du dossier wp-content, si vous voulez laisser vos psd et autre fichiers source, ils sont protégé

  location / {
    if (!-e $request_filename) {
      rewrite ^(.+)$ /index.php?q=$1 last;
    }
  }

Renvoie tous sur l’index, cela permet d’utiliser le format d’url de votre choix.

  location ~ \.php$ {
    fastcgi_pass   php5;
    fastcgi_index  index.php;
    include fastcgi_params;
    fastcgi_ignore_client_abort     off;
  }

cette partie permet d’exécuter le php, a adapter suivant votre configuration

  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires max;
  }

Cela permet de mettre en caches les fichiers static.

}

Suggestions de lecture :

comments powered by Disqus