Diferencia entre "ubicación /" y los valores de bloque del servidor predeterminado de Nginx

Diferencia entre "ubicación /" y los valores de bloque del servidor predeterminado de Nginx

¿Cuál es el punto de definirlo location / { }ya que, si entiendo correctamente, esto coincidirá con todos los URI potenciales y "perderá" cualquier batalla contra una ubicación con un URI más específico? Mi razonamiento es que puedes poner todos los valores predeterminados directamente en el bloque del servidor en lugar de definir un archivo location / { }.

Por lo tanto, si estoy en lo cierto, esto no sirve para nada:

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

}

PD: Soy bastante nuevo en nginx, así que no dudes en decirme si puedo expresar mejor las cosas para que la pregunta sea más útil/descubrible.

Respuesta1

Tienes razón, tu ejemplo específico no sirve para nada. Pero hay muchas directivas nginx que no funcionan a nivel de servidor.

Por ejemplo:

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

^ esto no funciona.
v esto sí.

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

Las directivas a nivel de servidor son valores predeterminados. Hay directivas que funcionan solo a nivel de servidor, hay directivas que funcionan solo a nivel de ubicación.

Son dos cosas fundamentalmente diferentes, solo que tu ejemplo tiene las mismas consecuencias.

información relacionada