Root ignored for "location = /"?

Hello,

I want the index.html file in a particular directory to only be served
when the domain’s root URI is requested.

Using the config

server example.com;
index index.html;
location = / {
root path/to/dir;
}

a request to example.com results in index.html in the Nginx default root
“/html” directory being served.

The same thing happens with a trailing slash on the root, or when I
substitute a trailing-slash alias directive.

If I use an alias directive without a trailing slash I get 403 error

directory index of "path/to/dir" is forbidden.

There are no problems if I instead use “location /”.

Can anyone suggest a reason or a resolution?

Thanks.

Mark

On Friday 07 February 2014 01:32:44 Mark J. wrote:

Hello,

I want the index.html file in a particular directory to only be served when
the domain’s root URI is requested.

Using the config

server example.com;
index index.html;
location = / {
root path/to/dir;
}

a request to example.com results in index.html in the Nginx default root
“/html” directory being served.

The same thing happens with a trailing slash on the root, or when I
substitute a trailing-slash alias directive.

If I use an alias directive without a trailing slash I get 403 error

directory index of "path/to/dir" is forbidden.

There are no problems if I instead use “location /”.

Can anyone suggest a reason or a resolution?

The reason is documented: Module ngx_http_index_module

“It should be noted that using an index file
causes an internal redirect …”

wbr, Valentin V. Bartenev

On 07/02/14 02:23, Valentin V. Bartenev wrote:

The reason is documented:Module ngx_http_index_module

“It should be noted that using an index file
causes an internal redirect …”

Thanks very much for this Valentin. I’ve been stuck on this for a while.
The solution was to replace the “location = /”
block with a “location = /index.html” block.