Cómo escribir reglas de reescritura en el entorno nginx del servidor Linux
* ~ significa coincidencia que distingue entre mayúsculas y minúsculas
* ~* significa coincidencia que distingue entre mayúsculas y minúsculas
*! ~ y! ~* son coincidencias que distinguen entre mayúsculas y minúsculas y coincidencias que no distinguen entre mayúsculas y minúsculas, respectivamente
II. Coincidencia de archivos y directorios, donde:
* -f y ! -f se utiliza para determinar si el archivo existe
* -d y ! -d se utiliza para determinar si el directorio existe
* -e y! -e se usa para determinar si el archivo o directorio existe
* -x y !-x se usan para determinar si el archivo es ejecutable
3. El comando es la marca de bandera, las etiquetas de bandera incluyen:
1.last es equivalente a la bandera [L] en Apache, lo que indica reescritura.
2.break finaliza la coincidencia una vez completada la regla y ya no coincidirá con las reglas posteriores.
3. La redirección devuelve una redirección temporal 302 y la dirección del navegador mostrará la URL redirigida.
4. Permanent devuelve la redirección permanente 301 y la dirección del navegador mostrará la dirección URL redirigida.
Utilice last y break para implementar la reescritura de URI y la barra de direcciones del navegador permanecerá sin cambios. Y hay una diferencia sutil entre los dos. Cuando use la directiva alias, debe usar la última etiqueta; cuando use la directiva proxy_pass, debe usar la etiqueta break. La última etiqueta reiniciará la solicitud en la etiqueta {...} en su servidor después de que se complete la ejecución de esta regla de reescritura, mientras que la etiqueta de interrupción finalizará la coincidencia después de que se complete la coincidencia de esta regla.
Por ejemplo, si redireccionamos una URL como /photo/123456 a /path/to/photo/12/1234/123456.png
reescribimos "/photo/([ 0 -9]{2})([0-9]{2})([0-9]{2})"/ruta/a/foto/$1/$1$2/$1$2$3.png;
Instrucciones relacionadas con las reglas de NginxRewrite
1. Instrucción de interrupción
Se utiliza en los siguientes entornos: servidor, ubicación, si;
Esta instrucción está completa. El conjunto de reglas actual ya no procesa directivas de reescritura.
Instrucción 2.if
Entorno de uso: servidor, ubicación
Esta instrucción se utiliza para verificar si se cumple una determinada condición. Si se cumple la condición, las llaves se ejecutan declaraciones dentro.
3. Instrucción de retorno
Sintaxis: código de retorno;
Entorno de uso: servidor, ubicación, si;
Esta instrucción se utiliza para end Ejecución de la regla y devolución de un código de estado al cliente.
Ejemplo: si la URL a la que se accede termina en ".sh" o ".bash", se devolverá un código de estado 403
ubicación ~ .*\.(sh|bash) $
{
return 403;
}
4.reescribir comando
Sintaxis: reescribirgex reemplazo? flag
Usado para: servidor, ubicación, si
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 utilizar una declaración if, como en el siguiente ejemplo:
if( $host ~* www\.(. *) )
{
establecer $host_ without_www $1;
reescribir ^(. *)$ *.linuxidc.net localhost 208.97.167.194;
if ($invalid_referer) { p>
reescribir ^/;
index index.html index.htm index.php;
root /opt/lampp/htdocs/www;
reescribir ^/ /;
acceso_cerrar sesión
}
16. Arranque multidominio
server_name www.linuxidc.comwww. .linuxidc.net;
index index.html index.htm index.php
root /opt/lampp/htdocs
if ($host ~; "linuxidc\.net ") {
reescribir ^(. *) $1permanent;
}
6. variables globales de nginx
arg_PARAMETER #Si en Si la variable PARAMETER existe en la solicitud GET, la variable contiene el valor de la variable PARAMETER.
args #Esta variable es igual a los parámetros en la línea de solicitud (solicitud GET), como foo=123amp; bar=blahblah
binary_remote_addr #Dirección del cliente binario.
body_bytes_sent #El número de bytes del cuerpo enviados en la respuesta. Este valor es preciso incluso si se interrumpe la conexión.
content_length #Campo de longitud del contenido en el encabezado de la solicitud.
content_type #campo Tipo de contenido en el encabezado de la solicitud.
cookie_COOKIE #El valor de la variable Cookie COOKIE
document_root #El valor especificado en la directiva raíz de la solicitud actual.
document_uri #Igual que uri.
host #Solicitar campo de encabezado de host; de lo contrario, es el nombre del servidor.
hostname #Establezca el nombre de host de la máquina devuelto por gethostname
pletion #Establezca en Aceptar si la solicitud se ha cerrado. Establezca en Aceptar si la solicitud no está cerrada o la solicitud no es la última en la cadena de solicitud.
request_method #GET o POST
request_filename #La ruta del archivo de la solicitud actual, generada por la directiva raíz o una directiva de alias con una solicitud URI.
request_uri #Contiene el URI original de los parámetros de solicitud (sin el nombre del host), como "/foo/bar.php?arg=baz". No se puede modificar.
método #HTTP del esquema (por ejemplo: $[NC]
RewriteCond {HTTP_HOST}!^localhost$
RewriteCond {HTTP_HOST}!^192\. 168 \.0\.(. *?) $
RewriteRule ^/(. *)$ )
{
set $allowHost '1';
}
if( $host ~* ^localhost )
{
set $allowHost '1';
}
if( $host ~* ^192\.168\.1\.(. *?) $ )
{
establecer $ permitirHost '1';
}
if( $allowHost ! ~ '1' )
{
reescribir ^/( . *)$ redirigir;
}