X-Accel-Redirect with proxy_pass

Chris Bolt chrisbolt at gmail.com
Thu Jun 11 06:06:27 MSD 2009


I'm having trouble with a problem that someone appears to have had
trouble with in the past:

http://thread.gmane.org/gmane.comp.web.nginx.english/6619

I'd like a script to return a proxied file, and for nginx to handle
the proxying. My configuration has:

location / {
    if ($request_uri ~* ^/(av01|av02)/(.*)) {
        set $regex_host $1.da;
        set $regex_uri $2;
        proxy_pass http://$regex_host/$regex_uri;
    }
}
location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;
}

test.php is:

<?php
header("X-Accel-Redirect: /av01/robots.txt");
?>

So I would like test.php to return the contents of http://av01.da/robots.txt

$ curl http://testnginx/av01/robots.txt
User-Agent: *
Disallow: /

That's working fine, as error log confirms:

2009/06/10 19:03:30 [notice] 4488#0: *94 "^/(av01|av02)/(.*)" matches
"/av01/robots.txt", client: 10.0.0.25, server: testnginx.da, request:
"GET /av01/robots.txt HTTP/1.1", host: "testnginx"

$ curl http://testnginx/test.php
<html>
<head><title>404 Not Found</title></head>

Hmm:

2009/06/10 19:04:21 [notice] 4488#0: *116 "^/(av01|av02)/(.*)" does
not match "/test.php", client: 10.0.0.25, server: testnginx.da,
request: "GET /test.php HTTP/1.1", upstream:
"fastcgi://127.0.0.1:9000", host: "testnginx"
2009/06/10 19:04:21 [error] 4488#0: *116 open()
"/usr/html/av01/robots.txt" failed (2: No such file or directory),
client: 10.0.0.25, server: testnginx.da, request: "GET /test.php
HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "testnginx"

Is there a regression for this functionality, or am I trying to use a
feature that isn't supported?





More information about the nginx mailing list