For a complete sample Nginx+PHP-FPM config, view this how-to: Nginx & PHP-FPM
In order to use path
URL format and hide index.php on nginx+fastcgi+php, we need the following configurations.
First, we need to add PATH_INFO to the server configuration. Otherwise, we will not be able to use path
URL format in Yii:
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
access_log off;
}
Second, we need the following rewrite rule to hide index.php
:
nginx versions .7 and higher:
location /yiiGuestbook {
try_files $uri $uri/ /yiiGuestbook/index.php?r=$request_uri;
}
nginx versions prior to .7:
location /yiiGuestbook {
if (!-e $request_filename){
rewrite (.*) /yiiGuestbook/index.php/$1;
}
}
Please refer to the Guide for hiding index.php
on Apache httpd server.
Links ¶
FYI, it is good practice to have your 'root' declaration outside of the location blocks. Please refer to this article if you are new to nginx:
Problems in root directory solved.
So I originally had issues with multipaged listviews. I was running scripts from root directory things weren't getting parsed correctly. You might want to add this to the wiki entry.
My nginx (v. 0.8.5) rule is:
location / {
try_files $uri $uri/ /index.php;
}
Before having
location / {
try_files $uri $uri/ /index.php?r=$request_uri;
}
Was causing problems.
Hope this helps someone!
try_files
When using try_files with index.php?r=$request_uri; I had an endless 302 loop (using nginx 1.0.5). using try_files with just index.php as suggested by SniperZero fixed the problem.
Another try_files option
In some cases try_files last uri should be changed to:
try_files $uri $uri/ /yiiGuestbook/index.php$request_uri;
I think(in my case) this depends on if you are splitting path_info, i.e using fastcgi_split_path_info.
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.