NGinx & Dotclear en mode PATH_INFO
Cet article est destiné aux personnes qui rencontrent des difficultés (comme moi) à configurer correctement NGinx pour Dotclear en mode PATH_INFO.
J'ai eu quelques déboires avant de réussir à configurer NGinx pour ce site, voici les astuces de ma configuration que j'ai créée à partir d'informations estampillées sur la toile.
Si vous avez des idées d'amélioration, n'hésitez pas à laisser un commentaire. Je mettrai à jour cet article en fonction des retours reçus.
server {
listen 80;
server_name www.geeek.org;
# Si vous n'exploitez pas les access_log, ils ne servent C rien et consomment des IO.
access_log off;
index index.php index.html;
root /var/www/www.geeek.org/public_html/;
# Seuls Feedburner possC(de les doit d'accC(s aux flux RSS du site.
if ($http_user_agent !~ FeedBurner) {
rewrite ^/feed/rss2$ http://feeds.feedburner.com/blog-de-geeek last;
rewrite ^/feed/atom$ http://feeds.feedburner.com/blog-de-geeek last;
}
# Vous pouvez prC)ciser un deuxiC(me mot de passe si vous C*tes parano comme moi.
location /admin {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd/default;
try_files $uri $uri/ /index.php;
}
# Bloque l'accC(s aux fichiers non publiables
location ~ ^/(db|cache|plugins|inc) {
deny all;
return 404;
}
# MC)canisme de redirection avec le PATH_INFO
location / {
try_files $uri $uri/ @dotclear_path_info;
}
# Redirection de la requC*tes avec les paramC(tres en PATH_INFO
location @dotclear_path_info {
rewrite ^/(.*) /index.php/$1 last;
}
# Si script PHP simple
location ~ \.php$ {
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# Si script PHP en mode PATH_INFO
location ~ \.php(/.*)$ {
# With php5-fpm:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}