Problems with fastcgi php migration
Ian M. Evans
ianevans at digitalhit.com
Thu Mar 13 15:00:43 MSK 2008
Igor Sysoev wrote:
>> if ($uri ~ ^(/[^/]+)(/.*)) {
>> set $script_name $1;
>> set $path_info $2;
>
> fastcgi_pass 127.0.0.1:10004;
>
>> }
Not sure if you saw my next email after this one you responded too. It's
99% working right now...but that's for later.
The fastcgi_pass you added is unncessary as it's already there at the
bottom of the location. (see below)
To confirm that I just did the following.
I turned cgi.fix-pathinfo=0 and added the fastcgi_pass to the if block
as you placed above. Restarted nginx and fastcgi servers.
Received 404s.
Reset it to what I had late last night:
cgi.fix-pathinfo=1
The following location, with cgi.fix-pathinfo=1, is 99% working:
location ~ ^/(testgalleries|galleries|poll|news|photos)(/|$) {
root /usr/local/apache/htdocs;
set $script_name $uri;
set $path_info "";
if ($uri ~ ^(/[^/]+)(/.*)) {
set $script_name $1;
set $path_info $2;
}
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 PATH_TRANSLATED $document_root$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;
fastcgi_param SCRIPT_FILENAME $document_root$script_name;
fastcgi_param PATH_INFO $path_info;
#fastcgi_param REDIRECT_STATUS 200;
fastcgi_pass 127.0.0.1:10004;
}
So 99% success. The final, final hurdle as I mentioned in my 9:14PM
Eastern email is that the location regex works only if the extensionless
file is in the root, i.e. example.com/galleries
location ~ ^/(testgalleries|galleries|poll|news|photos)(/|$) {
However, the file photos can appear anywhere like:
example.com/academy/80/photos
example.com/fest/tiff/2008/1/photos
So the regex just needs one final tweak to allow it to find an
extensionless file no matter if it's in root or any number of
subdirectories deep. I read several regex tutorials last night but my
brain goes on vacation with regex.
So we're 99.9999% there. Thanks again.
More information about the nginx
mailing list