location ~ .*(\.php)? { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fcgi.conf; set $path_info "";#初始化一个变量 set $real_script_name $fastcgi_script_name;#初始化一个变量,并且获取到一个原始赋值 if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {#检测如果.php后面还存在/开始参数,将参数处理 set $real_script_name $1;#将第一个正则子串匹配到的赋值 set $path_info $2;#将第二个正则子串匹配到的赋值 } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;#修改SCRIPT_FILENAME值 fastcgi_param SCRIPT_NAME $real_script_name;#修改SCRIPT_NAME值 fastcgi_param PATH_INFO $path_info;#修改PATH_INFO值 #上述三个赋值都是replace into的模式,这些值都是写在fcgi.conf中 }
fcgi.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-redirectfastcgi_param REDIRECT_STATUS 200;