Red de conocimiento informático - Material del sitio web - Cómo abrir el registro de reescritura de nginx

Cómo abrir el registro de reescritura de nginx

nginx admite la reescritura de URL y condiciones if a través del módulo ngx_http_rewrite_module, pero no admite más.

Este módulo requiere compatibilidad con PCRE. Al compilar nginx, debe especificar el directorio de origen de PCRE y el método de instalación de nginx.

La secuencia de ejecución de las instrucciones de reescritura de nginx es la siguiente:

1. Ejecute las instrucciones de reescritura en el bloque del servidor (el bloque aquí se refiere al área rodeada por {} después del servidor). palabra clave, otros bloques xx son similares)

2. Ejecutar coincidencia de posición

3 Ejecute las instrucciones de reescritura en las instrucciones de reescritura seleccionadas en la posición

If If. uno de los URI se reescribe en un determinado paso, se repetirá de 1 a 3 veces hasta que se encuentre un archivo real

Si el ciclo excede 10 veces, se devolverá un error interno del servidor 500

comando break

Sintaxis: break;

Predeterminado: Ninguno

Alcance: servidor, ubicación, si

Detener la ejecución el host virtual actual Conjunto de instrucciones de reescritura posterior

ejemplo de instrucción de interrupción:

if ($slow) {

limit_rate 10k;

break ;

romper;

if ($slow) {

limit_rate 10k; p>

}

if directiva

Sintaxis: if (condición){...}

Predeterminado: Ninguno

Alcance: servidor, ubicación

Juzga las condiciones dadas. Si es verdadero, se ejecutarán las instrucciones de reescritura encerradas entre llaves.

Si la condición puede ser cualquiera de las siguientes:

Nombre de la variable; si la variable es una cadena vacía o una cadena que comienza desde 0, es falsa;

Compare variables y cadenas, use =,! = para comparar variables y cadenas

Es una variable que coincide con la expresión regular ~, ~*, si la expresión regular contiene },;, entonces la expresión completa La fórmula debe estar entre "o '"

Para verificar si el archivo existe, use -f, ! -f Comprueba si el archivo existe

Utiliza -d, ! -d Comprueba si el directorio existe

Utiliza -e, ! -e comprueba si el archivo, directorio o enlace simbólico existe

Utilice -x, ! -x Comprueba si el archivo es ejecutable

if ejemplo de comando

if ($http_user_agent ~ MSIE) {

reescribe ^(. *)$ /msie/ $1 descanso;

}

if ($http_cookie ~* "id=([^;] )(?:;|$)") {

establecer $id $1;

}

if ($request_method = POST) {

devolver 405;

}

if ($slow) {

limit_rate 10k;

}

if ($invalid_referer) {

devuelve 403;

}

Comando de retorno

Sintaxis: código de retorno;

URL del código de retorno;

URL de retorno;

Valor predeterminado: ninguno

Alcance: servidor, ubicación, si

Detiene el procesamiento y devuelve el código de estado especificado al cliente.

El código de estado no estándar 444 indica que la conexión se cerró y no se enviaron encabezados de respuesta al cliente.

A partir de la versión 0.8.42, return admite responder a redireccionamientos de URL (para 301, 302, 303 y 307) o respuestas de texto (para otros códigos de estado).

Puede contener variables para texto o redirección de URL

Directiva de reescritura

Sintaxis: reescribir reemplazo de expresiones regulares [bandera];

Valor predeterminado: Ninguno

Alcance: servidor, ubicación, si

Si el URI coincide con la expresión regular especificada, el URI se reescribirá como reemplazo.

Las reescrituras se realizarán en el orden en que aparecen en el archivo de configuración.

Si el reemplazo comienza con "http://" o "https://", el procesamiento no continuará y se devolverá una redirección al cliente.

flag puede ser uno de los siguientes parámetros

última parada de procesamiento de conjuntos de directivas de reescritura posteriores y luego busca nuevamente en el conjunto de directivas de reescritura el nuevo URI que se está reescribiendo actualmente.

break detiene el procesamiento de instrucciones reescritas posteriores y ya no las busca, pero puede ejecutar las declaraciones no reescritas restantes en la posición actual y las declaraciones no reescritas fuera de la posición.

redireccionamiento Si el reemplazo no comienza con http:// o https://, devuelva 302 Redireccionamiento temporal

permanente Devuelva 301 Redireccionamiento permanente

Final y complete La URL de redireccionamiento incluye tres partes: esquema de solicitud (http://, https://, etc.), solicitud server_name_in_redirect y port_in_redirect. Para decirlo sin rodeos, son las tres partes del nombre de dominio y el puerto del protocolo http.

ejemplo de reescritura

servidor {

...

reescritura ^(/download/. *)/media/(. * )/...*$ $1/mp3/$2.mp3 último;

reescribir ^(/download/. *)/audio/(. *)\...*$ $1/mp3/$2 .ra último;

return 403;

...

}

Si coloca estas anulaciones como a continuación " /descargar/ " ubicación, debes usar break en lugar de last. Usar last repetirá la coincidencia 10 veces y devolverá un error 500:

ubicación /descargar/ {

reescribir ^(/descargar / . *)/media/(. *)/....*$ $1/mp3/$2.mp3 break;

reescribir ^(/download/. *)/media/(. *) \ ....*)/audio/(. *)\...*$ $1/mp3/$2.ra break;

return 403;

}

Para la URL reescrita (reemplazo), que contiene los parámetros de solicitud de la solicitud original, después de la URL original, si no desea incluir los parámetros de solicitud originales, puede agregar un signo de interrogación en el reemplazo. Por ejemplo, agregamos un parámetro personalizado usuario=$1 y luego en ?, eliminamos el parámetro de solicitud original.

reescribir ^/users/(. *)$ /show?user=$1? last;

Si la expresión regular contiene "}" o ";", entonces toda la expresión expresión La fórmula debe estar entre comillas dobles o comillas simples.

Comando de registro de reescritura

Sintaxis: rewrite_log on|off;

Predeterminado: rewrite_log off;

Alcance: http, servidor, ubicación , if

Activa o desactiva el registro de procesamiento de reescritura a nivel de notificación. Imprima el registro de procesamiento de reescritura en el archivo de registro de errores.

Ejemplo de nginx activando el registro de reescritura

rewrite_log activado;

registros de error_log/aviso xxx.error.log;

1. Activar la reescritura

2. Ajustar el nivel del registro de errores Ajustar el nivel del registro de errores para notar

establecer comando

Sintaxis: establecer valor de variable;

Predeterminado: Ninguno

Alcance: servidor, ubicación, si

Defina una variable y asígnele un valor. El valor puede ser texto, una variable, o un valor mixto de texto y variables.

Directiva uninitialized_variable_warn (advertencia de variable no inicializada)

Sintaxis: uninitialized_variable_warn on | off;

Predeterminado: uninitialized_variable_warn on

Alcance.: http , servidor, ubicación, if

Controla si las variables de inicialización se envían al registro