External Redirect when expecting internal redirect

Francis Daly francis at daoine.org
Sun Mar 10 12:57:09 UTC 2013

On Sun, Mar 10, 2013 at 01:30:22PM +0100, Thomas Glanzmann wrote:

Hi there,

> Depending on the subnet accessing either rewrite internally to a cgi
> script or to a static Website. For the cgi script that works perfectly
> fine, for the static web site nginx always does a HTTP 301 instead of an
> internal rewrite.

What do you expect the user to see with the static web site? As in,
what content do you wish nginx to return?

>                 location /blank {
>                         internal;
>                         autoindex on;
>                         autoindex_exact_size off;
>                 }
>                 location = / {
>                         rewrite ^ /$site last;
>                 }

So, the request is for "/", nginx does a rewrite (internal) to "/blank",
and that is a directory, so nginx does a redirect (external) to "/blank/".

That's pretty much what I expect to happen.

(Then the browser requests /blank/ and gets rejected because the
location{} is marked "internal".)

> I would like to acomplish that when access the webserver the client
> is internally redirected to eva.pl, which works, but if another ip address
> access a website from static files is displayed, which works was well if I drop
> the 'internal' keyword from location /blank but not using an internal redirect.
> What do I have to change in order to make the internal rewrite for the files
> work?

You can use an internal rewrite to a file, provided that you actually
rewrite to a file. Here, you rewrite to a directory without including
the trailing /.

I confess I'm not sure what it is that you want to do.

Possibly setting the default in the map to "blank/" will help?

But you will have to decide what the next step for the user is.

Francis Daly        francis at daoine.org

More information about the nginx mailing list