Posting to FastCGI in named locations

Igor Clark igor at pokelondon.com
Mon May 19 13:01:31 MSD 2008


Hiya, sorry to keep on about this!

Is there anything more I can provide, more detailed debug output or  
anything, to help track this down?

Thanks,
Igor

On 15 May 2008, at 15:50, Igor Clark wrote:

> Hi there Igor,
>
> I'm having real problems using PHP/FCGI, named locations and POST.  
> I've been through our previous discussions, all the mailing list and  
> the wiki and I just can't work out what's wrong, whether it's a  
> configuration problem, a bug, or what.
>
> I've tried to reduce to the bare minimum simple components to see  
> how to fix it, and it still happens.
>
> nginx config:
>
> 	location / {
> 		index   index.php;
> 		error_page  404 =   @phpapp;
> 	}
>
> 	location @phpapp {
> 		fastcgi_pass		127.0.0.1:9000;
> 		fastcgi_index	index.php;
> 		fastcgi_param	SCRIPT_FILENAME  $document_root/test.php;
> 		fastcgi_param	SCRIPT_URL  $fastcgi_script_name;	# for use in  
> particular PHP framework
> 		include			fastcgi_params;
> 	}
>
> Posting from /form.html:
>
> 	<form method="POST" action="/blah"> <input type="text"  
> name="value"> <input type="submit"> </form>
>
> to /blah, which is passed via FastCGI to test.php:
>
> 	<pre><?	print_r($_SERVER); ?></pre>
>
> When I try to POST, I get 405 Not Allowed.
>
> Neither static_post nor post_to_static seem to be in place (nginx  
> 0.6.31):
>
> 	2008/05/15 14:54:44 [emerg] 11264#0: unknown directive  
> "static_post" in /usr/local/nginx-0.6.31/conf/nginx.conf:51
> 	2008/05/15 14:54:56 [emerg] 11269#0: unknown directive  
> "post_to_static" in /usr/local/nginx-0.6.31/conf/nginx.conf:51
>
> When I change the error_page directive as you suggested before, so  
> that "POST /blah" should route to @phpapp, like so:
>
> 	error_page  404 405 =   @phpapp;
> 	
> the connection hangs and I get the attached debug output from nginx,  
> with the following error:
>
> 	2008/05/15 15:23:44 [debug] 19370#0: *3 http upstream recv(): 0  
> (11: Resource temporarily unavailable)
>
> which seems strange, as other PHP requests work fine.
>
> When I change back to a "normal" PHP setup, without named locations,  
> like this:
>
> 	location ~ \.php.*$ {
> 		fastcgi_pass		127.0.0.1:9000;
> 		fastcgi_param	SCRIPT_FILENAME  $document_root$fastcgi_script_name;
> 		include			fastcgi_params;
> 	}
>
> the POST from /form.html to /test.php works as expected, and I  
> haven't restarted or changed the PHP FCGI server in any way.
>
> I've tried this for 0.6.27, 0.6.28, 0.6.29, 0.6.31. It happens on  
> Linux kernels version 2.6.9-5.ELsmp and 2.6.9-67.0.4.ELsmp.
>
> Please could you let me know if you have any ideas about how to fix  
> this?
>
> All our sites use this sort of rewrite strategy and would like to  
> use the "named location fallback" configuration approach, but this  
> problem just makes it impossible if we need to POST anything, which  
> is often.
>
> Many thanks,
> Igor
>
> --
> Igor Clark • POKE • 10 Redchurch Street • E2 7DD • +44 (0)20 7749  
> 5355 • www.pokelondon.com
>
>
> <nginx-post-named-location-debug.txt>

--
Igor Clark • POKE • 10 Redchurch Street • E2 7DD • +44 (0)20 7749 5355  
• www.pokelondon.com








More information about the nginx mailing list