Análisis de reescritura de ngx_lua (openresty)
Reescribir regrex para reemplazar [flag]
Es decir, la URL coincide regularmente según la expresión regular, se reemplaza por reemplazo y la bandera es la forma de reescribir.
Entre ellos, flag tiene cuatro valores:
Continuo, interrumpido, redirigido, permanente
En...
Finalmente, pausa se reemplaza por ngx.req.set_uri().
Redireccionamiento, permanet se reemplaza por ngx.redirect().
uri es la información uri reescrita, el estado representa la redirección o permanente, donde la redirección representa la redirección 302 y la permanente representa la redirección permanente 301. Entonces el estado se puede escribir como 302 (el valor predeterminado es 302) o 301.
Por supuesto, el estado también se puede escribir con otros códigos de estado 301 302 303 307 308.
Reescribe ^/(.*)$ /aaa.html permanentemente
=
ngx.redirect(/aaa.html, 301)
p>Reescribir ^/(.*)$ /aaa.html redirección;
Ngx.redirect(/aaa.html, 302) o ngx. (/aaa.html).
uri representa la información reescrita como se muestra arriba. Si el salto es verdadero, el parámetro de salto indica si se debe volver a coincidir con la posición. Luego, nginx volverá a comparar la nueva ubicación según el uri modificado, pero si es falso (el valor predeterminado es falso), la ubicación no volverá a coincidir, pero se modificará el uri de la solicitud actual.
Corresponde al último y al descanso en nginx. El salto es verdadero, lo que significa que el último se reescribe y falso significa descanso.
Reescribe ^/(.*)$/AAA html al final;
ngx.req.set_uri("/aaa.html ", verdadero )
Reescribir ^/(.*)$/AAA html break;
=
ngx.req.set_uri("/aaa.html ", false)
=
ngx.req.set_uri("/aaa.html ")
Obtener los parámetros de solicitud. Antes, pensé en usar var. ¿URI incluirá el URI completo? ¿El parámetro devuelve una cadena que se descubrirá más tarde? No hay ningún hhh detrás. Entonces usé esta función.
¿Obtener www.123.com/aaa.php? a=hhh
Fuera:
Respuesta: Jaja
Generalmente se usa para verificar los parámetros de juicio y devolver diferentes páginas o reescribir de acuerdo con diferentes resultados de parámetros. .
A diferencia de get_uri, esta función se utiliza para establecer parámetros.
Generalmente se usa junto con set_uri arriba.
Este método se utiliza para obtener /posts/3341.
Cuando necesites leer el texto, debes activar el interruptor de lectura de texto. El método utilizado es llamar primero a ngx.req.read_body().
Pero todavía hay casos en los que el cuerpo no se puede leer porque el cuerpo de la solicitud está almacenado en un archivo temporal cero. En este momento, primero usamos ngx.req.get_body_file() para obtener el nombre de este archivo temporal de solo lectura.
Finalmente, lea el cuerpo de la solicitud de este archivo
Este método es similar a una combinación parcial de ngx.set_uri() y ngx.set_uri_args().
El significado principal de este método es: reescribir regrex para reemplazar la última redirección interna