Nginx中PHP+FastCGI配置技巧
Nginx中通过FastCGI运行php的配置
location ~ .php$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
root /var/www/html;
include fastcgi.conf;
}
其中fastcgi.conf文件内容:
#fastcgi.conf
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
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 $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
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 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;
# PHP only, required if PHP was built with –enable-force-cgi-redirect
#fastcgi_param REDIRECT_STATUS 200;
但是这个配置存在一点点小问题,所有php脚本都必须放到/var/www/html目录下,即以/var/www/html为根,但是类似Apache的Alias功能,php脚本是可以放到任何httpd可访问的任何目录,经过试验,可以通过这个方法实现:
location ~ .php$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
root /var/www/html;
if ( $uri ~ ^/cacti/ ) {
root /var/www;
}
include fastcgi.conf;
}
可以根据不同的条件来修改root的位置,从这点看来,Nginx的配置还是蛮自由的。