Red de conocimiento informático - Aprendizaje de programación - Cómo configurar reglas de reescritura de nginx

Cómo configurar reglas de reescritura de nginx

Tutorial de configuración de reglas de reescritura de reescritura de nginx

Hay 4 lugares donde puede aparecer la reescritura: NGX_HTTP_SRV_CONF, NGX_HTTP_SIF_CONF, NGX_HTTP_LOC_CONF, NGX_HTTP_LIF_CONF. Correspondiente a:

NGX_HTTP_SRV_CONF: en cualquier lugar del dominio del servidor en el archivo de configuración

NGX_HTTP_SIF_CONF: en la configuración if en el dominio del servidor en el archivo de configuración

NGX_HTTP_LOC_CONF: En cualquier lugar del campo de ubicación en el archivo de configuración;

NGX_HTTP_LIF_CONF: En la configuración if en el campo de ubicación en el archivo de configuración;

Ejemplo:

Copiar ejemplo de código de código:

//...

servidor {

//...

reescribir "^/ $" /index.php descanso;

if ($uri ~* "^/ abc") {

reescribe "^/ abc" /abc/index.php descanso;

}

ubicación /xy {

reescribir "^/ xy$" /xy/index.php break

}

}

La descripción detallada de la ubicación y las poderosas funciones de la ubicación se pueden buscar ingresando "ngingx ubicación" en el cuadro de búsqueda de este sitio web.

Información complementaria

1, instrucción de interrupción

Valor predeterminado: ninguno; entorno de uso: servidor, ubicación, si;

Esta instrucción La función es completar el conjunto de reglas actual y ya no procesar el comando de reescritura.

2, if instrucción

Valor predeterminado: ninguno; entorno de uso: servidor, ubicación

Esta instrucción se utiliza para verificar si se cumple una condición. Se cumple la condición, se ejecuta la declaración dentro de las llaves. Si las instrucciones no admiten el anidamiento, no se admiten múltiples condiciones y ||

A. Nombre de variable, los valores incorrectos incluyen: cadena vacía "" o cualquier cadena que comience con 0

B. La comparación de variables puede usar "=" (que significa igual) y ". !=" (indica que no es igual a)

C. La coincidencia de patrones de expresiones regulares puede utilizar los símbolos "~*" y "~"

D. El símbolo "~" indica distinción Coincidencia de letras mayúsculas y minúsculas

E. El símbolo "~*" indica la coincidencia de letras mayúsculas y minúsculas sin distinguirlas

F. muy bien Al contrario de "~" y "~*", significa que no hay coincidencia

G."-f" y "!-f" se utilizan para determinar si el archivo existe

H."- d" y "!-d" se utilizan para determinar si el directorio existe

I "-e" y "!-e" se utilizan para determinar si el archivo o directorio existe.

J. "-x" y "!-x" se utilizan para determinar si el archivo es ejecutable.

K Se puede acceder a algunas expresiones regulares dentro de () usando $1~$9.

3. Instrucción de retorno

Sintaxis: código de retorno; Entorno de uso: servidor, ubicación, si;

Esta instrucción se utiliza para finalizar la ejecución de la regla. y devolver el código de estado al cliente.

Por ejemplo, si la URL a la que se accede termina en ".sh" o ".bash", se devolverá un código de estado 403.

Ejemplo de código de copia:

ubicación ~ .*.(sh|bash)?$

{

return 403;

}

4, reescribir comando

Sintaxis: reescribir indicador de reemplazo de expresiones regulares

Valor predeterminado: ninguno Entorno de uso: servidor, ubicación, if

Esta directiva redirige el URI o modifica la cadena según la expresión. Las instrucciones se ejecutan según el orden en el archivo de configuración. Tenga en cuenta que reescribir expresiones solo funciona con rutas relativas. Si desea emparejar nombres de host, debe usar una declaración if, como se muestra a continuación:

Copiar código Ejemplo:

if( $host ~* www.(.*) )

p>

{

establecer $host_ without_www $1;

reescribir ^(.*)$ /home permanente;

¿Acceso/prueba? id=5 Saltará a /home?id=5

Por ejemplo: si una URL similar /photo/123456 se redirige a /path/to/photo/12/1234/123456.png

Ejemplo de código de copia:

Reescribir "/photo/([0-9]{2})([0-9]{2})([0-9]{2} )" / ruta/a/foto/$1/$1$2/$1$2$3.png;

Nota: si hay llaves "{" o "}" en la expresión regular, comillas dobles o simples se deben utilizar comillas.

5. Establecer instrucción

Sintaxis: establecer valor de variable; Valor predeterminado: ninguno; Entorno de uso: servidor, ubicación, si;

Esta instrucción se utiliza para definir una variable y asignar un valor a la variable. El valor de una variable puede ser un texto, una variable o una unión de variables de texto.

Ejemplo: establecer $varname "hola mundo";

6, instrucción Uninitialized_variable_warn

Sintaxis: uninitialized_variable_warn on|off

Entorno de uso :http, servidor, ubicación, si

Este comando se utiliza para activar y desactivar el mensaje de advertencia de variables no inicializadas. El valor predeterminado está activado.

7. Variables globales que puede utilizar Nginx Rewrite

Ejemplo de copia de código:

$args, $content_length, $content_type, $document_root, $document_uri. , $host, $http_user_agent, $http_cookie, $limit_rate, $request_body_file, $request_method, $remote_addr,

$remote_port, $remote_user, $request_filename, $request_uri, $query_string, $scheme, $server_protocol, $server_addr, $server_name, $server_port, $uri

Ejemplo de escritura de reglas de reescritura de Nginx

1 Cuando los archivos y directorios a los que se accede no existen, redirija a un determinado archivo php

p>

Ejemplo de código de copia:

if( !-e $request_filename )

{

reescribe ^/(.*)$ index. php last;

}

2. Intercambio de directorio/123456/xxxx ====gt; /xxxx?id=123456

Copiar código Ejemplo de código:

reescribe ^/(d )/(. )/ /$2?id=$1 al final;

3. Si el cliente utiliza el navegador IE, reescribe Directo al directorio /ie.

Ejemplo de código de copia:

if( $http_user_agent ~ MSIE)

{

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

}

4. Prohibir el acceso a múltiples directorios

Ejemplo de copia de código:

ubicación ~ ^/(cron |plantillas)/

{

denegar todo;

romper;

}

5. a archivos que comienzan con /data

Ejemplo de código de copia:

ubicación ~ ^/data

{

denegar todo;

}

6. Prohibir el acceso a archivos con extensiones de archivo .sh, .flv, .mp3

Ejemplo de código de copia:

ubicación ~ .*.(sh|flv|mp3)$

{

return 403;

}

7. tiempo para ciertos tipos de archivos

Ejemplo de código de copia:

ubicación ~ .*.(gif|jpg|jpeg|png|bmp |swf)$

{

expira 30 días;

}

ubicación ~ .*.(js|css)$

{

expire 1h;

}

8. Establezca el tiempo de vencimiento para favicon.ico y robots.txt

Aquí, favicon.ico es 99 días; , robots.txt tiene 7 días y no registra 4

04 Registro de errores

Ejemplo de código de copia:

ubicación ~(favicon.ico) {

log_not_found off;

expires 99d;

interrupción;

}

ubicación ~(robots.txt) {

log_not_found off;

expire 7d;

break;

}

9. Establezca el tiempo de caducidad de un determinado archivo aquí es 600 segundos y no se registra ningún registro de acceso. /p >

Ejemplo de código de copia:

ubicación ^~ /html/scripts/loadhead_1.js {

access_log off;

root /opt /lampp /htdocs/web;

expire 600;

romper;

}