1

Hello to all nginx & php gurus

I'm installing dotclear (a blogging software written in PHP) on my debian, and I have a hard time configuring nginx, php5-fpm and php so that :

  1. I can use PATH_INFO url rewriting since I'm following Tim Berneer's Lee advice that urls should'nt expose what particular technology you use right now http://www.w3.org/Provider/Style/URI.html
  2. satic-files are not parsed by PHP since it's terribly insecure to let example.org/uploads/image.jpg/index.php to be sent to PHP
  3. have a root location that just works example.com should be rewritten to something like example.com/index.php?start

It seems that until now, I have to choose 2, that's why I'm asking for help here.

So here is my current /etc/nginx/nginx.conf

 server { server_name articles.eloge-de-la-folie.fr; root /srv/data1/articles.eloge-de-la-folie.fr ;

index index.php?start ; location / { try_files $uri $uri/ @pathinfo ; #try_files $uri $uri/ /index.php$uri?$args; } 

# Pretty URLs in dotclear # activate PATH_INFO urls in /admin/blog_pref.php location @pathinfo { rewrite ^ /index.php$uri?$args last; } location = / { rewrite ^ /index.php?start last; } location ~ ^(.+.php)(/.*)?$ { include fastcgi_params_pathinfo ; }

}

I put everything fastcgi related in a separate /etc/fastcgi_params_pathinfo config file

 fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; #fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS $https; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; # this is what I changed fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

Also in /etc/php5/fpm/pool.d/www.conf, I made sure to uncomment this

 security.limit_extensions = .php ; 

What happen currently ? - example.com/index.php and example.com/post/test are passed to the php interpretor and work - example.com/css/style.css are not passed to php and works - but when I go to example.com, the index.php is just downloaded, not interpreted.

My location = / { configuration here } is apparently never matched :(

Thanks in advance,

Jean-Michel

1
  • I forgot to say that I have nothing meaningful in the logs Commented Nov 3, 2013 at 10:11

2 Answers 2

0

I'm pretty sure this is the problem

index index.php?start ; location / { try_files $uri $uri/ @pathinfo ; #try_files $uri $uri/ /index.php$uri?$args; } 

Nginx will never find a file with the filename "index.php?start" on the hard drive. In your location / block you are saying, try to find the URI, which is just /, which is just the root directory, and it finds that.

My location = / { configuration here } is apparently never matched :(

It is matched, just the first one is matched and not the second one. Remove the first location / block and the index index.php?start (because I think the latter will never work).

0

Here you'll find help.
And keep this too:

fastcgi_param SCRIPT_FILENAME $request_filename; 

It's not very elegant, but I don't have a better solution to provide :(

One note, though: When configuring dotclear to use PATH_INFO, you still have an index.php inside, just as in the URL above (which is hosted by dotclear). There may be a way around this with URL rewrites...

1
  • Can you add more detail to improve this? Commented Nov 22, 2013 at 17:35

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.