Forum: NGINX Problem when using subfolder

Posted by PascalTurbo (Guest)
on 2012-12-25 17:04
(Received via mailing list)
Hi There,

need to solve the following Problem:

location / should point to /var/www/myfirstside
and location /subside should point to /var/www/mysecondside

I have no idea how to solve this.

I tried:

location / {
  root /var/www/myfirstside
}

location /subside {
  root /var/www/mysecondside
}

but this doesn't work because nginx send all requests for /subside to
/var/www/mysecondside/subside ...

Could anybody help me?

THX allot
Pascal

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,234428,234428#msg-234428
Posted by Maxim Dounin (Guest)
on 2012-12-25 17:08
(Received via mailing list)
Hello!

On Tue, Dec 25, 2012 at 11:04:03AM -0500, PascalTurbo wrote:

>
>
> Could anybody help me?

Try "alias":

    location / {
        root /var/www/myfirstside;
    }

    location /subside/ {
        alias /var/www/mysecondside/;
    }

See http://nginx.org/r/alias for details.

--
Maxim Dounin
http://nginx.com/support.html
Posted by Bill Culp (Guest)
on 2012-12-25 17:53
(Received via mailing list)
ngnix docs state that the closest match will always be found in location 
phrases

So why is alias needed?
Posted by Bill Culp (Guest)
on 2012-12-25 17:55
(Received via mailing list)
Ah IC your appending a context path, but since this isnt Java, Im still 
curious as to why
Posted by Maxim Dounin (Guest)
on 2012-12-25 19:05
(Received via mailing list)
Hello!

On Tue, Dec 25, 2012 at 08:52:32AM -0800, Bill Culp wrote:

> ngnix docs state that the closest match will always be found in location phrases
>
> So why is alias needed?

Normally (with root specified) nginx constructs file name as
<root> + <uri>.  This allows to specify root at any level, and it
will work without surprises via configuration inheritance.  I.e.

    root /path/to;

    location /foo/ {
        # ...
    }

and

    location /foo/ {
        root /path/to;
    }

and even

    location /foo/ {
        ...
        location /foo/bar {
            root /path/to;
        }
    }

all will result in a "/foo/bar.txt" request being mapped into
a "/path/to/foo/bar.txt" file.

In contrast, alias replaces part of the URI matched by a location,
and file name will be <alias> + <uri-part-not-matched>.  This is
more fragile as things change as you move the alias directive to
another place, but allows to map URI to file system if some parts
of the URI needs to be modified, e.g. in configuration like

    location /foo/ {
        alias /path/to/baz/;
    }

request to "/foo/bar.txt" will be mappend into
"/path/to/baz/bar.txt" file.

It is generally recommended to use "root", except in situations
like thread starter has, i.e. when URI needs to be modified when
mapping to a file system.

See here for docs:

http://nginx.org/r/root
http://nginx.org/r/alias

[...]

--
Maxim Dounin
http://nginx.com/support.html
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.