I know 'if' is evil, and in general shouldn't be used inside a
location block, but I needed this ability as well and have been using
the following without any trouble for a couple years.
upstream app_servers {
server localhost:3000;
}
server {
# set proxy settings here (not allowed in 'if')
proxy_set_header X-Real-IP $remote_addr;
location / {
if ($request_method = POST) {
proxy_pass http://app_servers;
break;
}
try_files $uri @app;
}
location @app {
proxy_pass http://app_servers;
}
}
If anyone has any better ideas, I'd love to hear them. So far, I
haven't been able to find any without having to patch the source.
While we're on the topic, I know there's been talk of allowing POST
requests to static files, but I don't remember a clear behavior being
defined. When added to nginx, will this simply serve the static file
as though a GET request was made? Ideally, one would be able to
specify that POST requests should always be proxied to an upstream
(which is what my config above does).
Maybe something like this in the config:
# handle just like a GET request
allow_static_post on;
# proxy to upstream
allow_static_post proxy_pass http://app_servers;
I don't use FCGI or PHP, so I'm not sure how the config would look for
those, but you get the idea.
Nick
On Fri, Jan 29, 2010 at 10:41 AM, kleinchris <nginx-forum@nginx.us> wrote:
> Can't edit my post...
> Here is a debug log, when i do it like this:
> error_page 405 =200 @405;
> location = @405 {
> root /var/www/vhosts/soulreafer;
> }
>
> http://nopaste.info/5cf44ab3b1.html
>
> nginx version: 0.8.32
>
> Posted at Nginx Forum: http://forum.nginx.org/read.php?2,2414,47301#msg-47301
>
>
> _______________________________________________
> nginx mailing list
> nginx@nginx.org
> http://nginx.org/mailman/listinfo/nginx
>
_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx