Welcome! Log In Create A New Profile

Advanced

Implicit root location?

J. Lewis Muir
July 30, 2019 05:22PM
Hello, all!

I have a minimal nginx.conf with one server block that sets the root
directory but has *no* location directives, yet for a request of "/", it
serves "/index.html". Why? With no locations specified, I expected it
to return 404 or similar for any request.

Here's the server block (entire nginx.conf at end of message):

----
server {
listen 127.0.0.1:80;
listen [::1]:80;
server_name localhost "" 127.0.0.1 [::1];
root /srv/www/localhost;
}
----

Here's the contents of /srv/www/localhost:

----
$ ls -al /srv/www/localhost
total 4
drwxr-xr-x. 2 root root 24 Jul 30 15:50 .
drwxr-xr-x. 3 root root 23 Jun 26 21:34 ..
-rw-r--r--. 1 root root 140 Jun 26 22:22 index.html
----

And here's the curl invocation:

----
$ curl 'http://localhost/'
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8"/>
<title>localhost</title>
</head>
<body>
<p>localhost</p>
</body>
</html>
----

I know that the default index directive is

----
index index.html;
----

That explains how it knows to try index.html, but what makes it try
the root when there are no location directives? Is there an implicit
location directive?

There is no default listed for the location directive:

https://nginx.org/en/docs/http/ngx_http_core_module.html#location

And I couldn't find this behavior stated in "How nginx processes a
request:"

https://nginx.org/en/docs/http/request_processing.html

Thank you!

Lewis

---- Complete nginx.conf ----
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
listen 127.0.0.1:80;
listen [::1]:80;
server_name localhost "" 127.0.0.1 [::1];
root /srv/www/localhost;
}
}
----
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Implicit root location?

J. Lewis Muir July 30, 2019 05:22PM

Re: Implicit root location?

Francis Daly July 31, 2019 07:56AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 248
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready