Разница между «location /» и значениями блока сервера Nginx по умолчанию

Разница между «location /» и значениями блока сервера Nginx по умолчанию

Какой смысл в определении location / { }, если я правильно понимаю, это будет соответствовать всем потенциальным URI и "проиграет" любую битву против местоположения с более конкретным URI? Я считаю, что вы можете просто поместить все значения по умолчанию непосредственно в блок сервера вместо определения location / { }.

Следовательно, если я прав, это бесполезно:

server {
   root /www/html;
   location / {
      root /www/html;
   }

}

PS: Я новичок в nginx, поэтому не стесняйтесь сказать мне, могу ли я сформулировать вопрос лучше, чтобы сделать его более полезным/понятным.

решение1

Вы правы, ваш конкретный пример бесполезен. Но есть много директив nginx, которые не работают на уровне сервера

например:

server {
    proxy_pass http://localhost:8080;
}

^ это не работает.
v это работает.

server {
    location / {
        proxy_pass http://localhost:8080;
    }
}

Директивы уровня сервера являются значениями по умолчанию. Есть директивы, которые работают только на уровне сервера, есть директивы, которые работают только на уровне местоположения.

Это две принципиально разные вещи, просто ваш пример имеет одинаковые последствия.

Связанный контент