Registro de problemas encontrados en el uso de Nginx

Pregunta uno, sobre espacios

La configuración de nginx es muy sensible a los espacios. Antes y después de las palabras clave y los símbolos, asegúrese de recordar espacios (o saltos de línea). Un escenario típico es la instrucción if {}, con espacios antes y después de las llaves, de lo contrario puede ocurrir un comportamiento inesperado.

Pregunta 2: sobre el problema del bloqueo del servidor

Cuando todos los bloques del servidor en el bloque http no pueden coincidir con la solicitud actual, nginx utilizará el primer bloque del servidor como elemento de selección coincidente en el bolsillo.

Por lo tanto, en la mayoría de los casos, un bloque de servidor común debe colocarse en la parte superior del bloque de servidor más para manejar solicitudes sin ninguna coincidencia, como devolver 404.

http { 

    servidor { 
        escuchar 80 ; 
        nombre del servidor _; 
        volver 404 ; 
    } 

        ... 
}

Pregunta tres: Reglas de coincidencia de bloque de servidor, es decir, ¿cómo decide nginx qué bloque de servidor usar para procesar la solicitud?

Lo que funciona son las dos configuraciones listen y server_name en el bloque del servidor.

Entre ellos, escuchar define lo que [IP]: [PUERTO] solicita que maneje el bloque del servidor actual, y nombre_servidor define qué condiciones debe cumplir el encabezado del host en la solicitud del bloque del servidor actual.

Aquí hay un extracto de la descripción del hermano mayor, el enlace original está aquí :


  1. Al intentar determinar a qué bloque de servidor enviar una solicitud, Nginx primero intentará escuchar la especificidad de la instrucción utilizando las siguientes reglas:
    1) Nginx reemplaza todas las instrucciones de arrendamiento incompletas con los valores predeterminados predeterminados (completa: puerto IP + El valor predeterminado de la combinación), por lo que el comando de escucha de cada bloque de servidor puede considerarse como una combinación de dirección IP y puerto. Ejemplos de tales conversiones son:
      a. Los bloques sin instrucciones de escucha usan este valor 0.0.0.0:80.
           b. El bloque establecido en 111.111.111.111 sin dirección IP de puerto se convierte en 111.111.111.111:80
           c. El bloque establecido en 8888 sin puerto de dirección IP se convierte en 0.0.0.0:8888
    2) Siguiente Nginx intentará recopilar uno Una lista de bloques de servidor. Esta lista se basa en la IP y el puerto más específicos. En otras palabras, si el bloque del servidor coincidente tiene una dirección IP específica, no coincidirá con el bloque del servidor con 0.0.0.0 como la dirección IP predeterminada. En cualquier caso, en el proceso de selección de Nginx del bloque del servidor, los puertos deben coincidir exactamente.
    3) Si solo hay una coincidencia más específica, el bloque del servidor se utilizará para proporcionar la solicitud. Si hay varios bloques de servidor con coincidencias específicas en el mismo nivel, entonces Nginx necesita continuar evaluando la instrucción nombre_servidor.

  2. Es importante tener en cuenta que Nginx continuará evaluando la instrucción nombre_servidor solo cuando la instrucción de escucha tenga varios bloques de servidores coincidentes en el mismo nivel.
  3. Luego, para evaluar más a fondo las solicitudes con la misma instrucción de escucha específica, Nginx verifica el encabezado "host" de la solicitud, que contiene el dominio o la dirección IP a la que el cliente realmente intentó acceder.
    Nginx mira su instrucción nombre_servidor en cada módulo de servidor candidato e intenta encontrar la mejor coincidencia. Nginx se evalúa mediante la siguiente fórmula:
    1) Nginx primero encuentra el módulo del servidor cuyo nombre_servidor coincide exactamente con la información del encabezado del Host solicitado. Si se encuentra este módulo del servidor, se utilizará para atender las solicitudes de los clientes. Si se encuentran múltiples coincidencias específicas, la primera se utilizará para proporcionar servicios.
    2) Si no se encuentra una coincidencia exacta, Nginx intentará encontrar el módulo del servidor cuyo nombre_servidor coincide con el carácter comodín anterior (indicado por * al comienzo del nombre en la configuración). Una vez que se encuentre uno, este módulo de servidor se usará para proporcionar servicios al cliente. Si se encuentran varias coincidencias, el módulo del servidor con la coincidencia más larga se utilizará para proporcionar servicios.
    3) Si no se encuentra ninguna coincidencia con el comodín previo, Nginx intentará encontrar el módulo del servidor donde nombre_servidor coincide con el comodín posterior (el final del nombre en la configuración se indica mediante *). Una vez que se encuentre uno, este módulo de servidor se usará para proporcionar servicios al cliente. Si se encuentran varias coincidencias, el módulo del servidor con la coincidencia más larga se utilizará para proporcionar servicios.
    4) Si no se encuentra ninguna coincidencia después de usar el comodín, Nginx evaluará a continuación el módulo del servidor que define nombre_servidor con una expresión regular (denotada por ~ delante del nombre). El primer nombre_servidor con una expresión regular que coincida con el encabezado Host se usará para proporcionar servicios.
    5) Si no se encuentra un módulo de servidor coincidente con nombre_servidor definido por expresión regular, Nginx utilizará el módulo de servidor con IP y puerto predeterminados.

 

Supongo que te gusta

Origin www.cnblogs.com/duanzi6/p/12694662.html
Recomendado
Clasificación