Reescritura del módulo básico de Nginx

Función de reescritura de reglas

Las reglas de reescritura pueden lograr la reescritura y la redirección de URL

Escena de roles:

Salto de acceso a URL, desarrollo y diseño de soporte, como salto de página, soporte de compatibilidad, efecto de visualización y otras
optimizaciones de SEO
Mantenimiento: mantenimiento de fondo, reenvío de tráfico, etc.
Seguridad

Reescribe escenarios prácticos

La implementación de los requisitos de salto de Nginx
Utilice reescribir para hacer coincidir y saltar
Utilice if para hacer coincidir las variables globales y luego saltar
Utilice la ubicación para hacer coincidir y luego saltar
reescribir en la sección del servidor {}, si {}, ubicación {} Usar
nombre de dominio o cadena de parámetro
si la variable global coincide,
use proxy_pass proxy inverso
Inserte la descripción de la imagen aquí

Metacaracteres comunes de expresiones regulares

El módulo de reescritura de Nginx admite expresiones regulares. Las expresiones regulares se mencionan en el artículo anterior. Si está de buen humor, puede mirar hacia atrás.
Inserte la descripción de la imagen aquí

Volver a escribir

reescribir <regex regular> <contenido de reemplazo después del salto> [bandera de bandera compatible con reescritura de bandera]

Ilustración de marca de bandera

Inserte la descripción de la imagen aquí

último gráfico frente a roturaInserte la descripción de la imagen aquí

Ubicación

Formato de coincidencia común de ubicación

ubicación = condición {} [coincidencia exacta]
condición de
ubicación {} [coincidencia general] ubicación ~ condición {} [coincidencia normal]

Expresiones comunes
Inserte la descripción de la imagen aquí

prioridad de ubicación

Si los tipos de expresión son los mismos, los que tengan más palabras se compararán primero

La prioridad de los tipos es la siguiente
= tipo
^ = tipo
~ y ~ * tipo
coincidencia de cadena regular tipo
coincidencia general /

La coincidencia de un archivo específico se basa en esto
(ubicación = ruta completa)> (ubicación ^ ~ ruta completa)> (ubicación ~ * ruta completa)> (ubicación ~ ruta completa)> (ubicación ruta completa)> (ubicación /)

Use el directorio para hacer coincidir para acceder a un archivo
(ubicación = directorio)> (ubicación ^ ~ directorio)> (ubicación ~ directorio)>
(ubicación ~ * directorio)> (directorio de ubicación)> (ubicación /)

location = / {
    
    	##精确匹配 /,主机名后面不能带任何字符串'
    [configuraion A ]	
}

location / {
    
    	##所有的地址都以/开头,这条规则将匹配到所有请求,但正则和最长字符串会优先匹配'
    [configuraion B ]
}

location /documents/ {
    
    		##匹配任何以/documents/开头的地址,当后面的正则表达式没有匹配到时,才起作用'
    [configuraion C ]
}

location ~ /documents/abc {
    
    		##匹配任何以/documents/abc开头的地址,当后面的正则表达式没有匹配到时,才会起作用'
    [configuraion D ]
}

location ^~ /images/ {
    
    	##以/images/开头的地址,匹配符合后,停止往下匹配'
    [configuraion E ]
}

location ~*\.(gif|jpg|gpeg)$ {
    
    	##匹配所有以 gif, jpg或jpeg结尾的请求, Images/下的图片会被 [configuration E]处理,因为^~的优先级更高'
    [configuraion F ]
}

location /images/abc {
    
    	##最长字符匹配到 /images/abc,优先级最低'
    [configuraion G ]
}

location ~ /images/abc {
    
    	##以/ Images/abc开头的,优先级次之'
    [configuraion H ]
}

location /images/abc/1.html {
    
    	##如果和正则 ~ images/abc/1.htm相比,正则优先级更高'
    [configuraion I ]

La diferencia entre reescribir y ubicar

Mismo punto

Puede saltar

diferencia

Reescribir es cambiar la ruta para obtener recursos en el mismo nombre de dominio.La
ubicación es controlar el acceso o el proxy inverso para un tipo de ruta, y también puede pasar por proxy a otras máquinas.

Reescribe golpes en la ubicación, orden de ejecución

Ejecutar la instrucción de reescritura en el bloque del servidor
Ejecutar la coincidencia de ubicación
Ejecutar la instrucción de reescritura en la ubicación seleccionada

¡Dale! ¡Mostrar! !

Antes de nginx, usamos código fuente para compilar e instalar, esta vez usamos el gran perro amarillo para instalar

[root@5centos ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@5centos ~]# yum -y install nginx

Realice la función de redireccionamiento según el nombre de dominio

Por ejemplo, el antiguo nombre de dominio de la empresa www.ora.com de repente no quiere usarlo y necesita usar el nuevo nombre de dominio www.nge.com en su lugar, pero el antiguo nombre de dominio no se puede eliminar, debe ser redirigido al nuevo nombre de dominio y los siguientes parámetros permanecen sin cambios.
Instale la
configuración del servicio DNS
La instalación y configuración de DNS de dos nombres de dominio www.ora.com y www.nge.com se escribieron en el blog anterior: Configuración del servicio DNS

[root@5centos named]# echo "nameserver 20.0.0.5" > /etc/resolv.conf
[root@5centos named]# nslookup www.ora.com
Server:		20.0.0.5
Address:	20.0.0.5#53

Name:	www.ora.com
Address: 20.0.0.5

[root@5centos named]# nslookup www.nge.com
Server:		20.0.0.5
Address:	20.0.0.5#53

Name:	www.nge.com
Address: 20.0.0.5

Ver la ubicación del archivo de configuración de nginx

[root@5centos /]# rpm -qc nginx
/etc/logrotate.d/nginx
/etc/nginx/conf.d/default.conf     ##默认主配置文件
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug

Modificar el archivo de configuración principal

[root@5centos /]# vim /etc/nginx/conf.d/default.conf
  server {
    
    
    listen       80;
    server_name  www.ora.com;
  location / {
    
       ##找到这行
        if ($host = "www.ora.com"){
    
    
          rewrite ^/(.*)$ http://www.nge.com/$1 permanent;
        }
        root   /usr/share/nginx/html; ##在这行上面添加
        index  index.html index.html
    }
    ……省略部分……
[root@5centos /]# cd /usr/share/nginx/html/
[root@5centos html]# ls
50x.html  index.html
[root@5centos html]# cp -p index.html index.html.back
[root@5centos html]# vim index.html
<h1>ORA</h1>
~                                 
[root@5centos /]# systemctl start nginx
[root@5centos /]# setenforce 0
[root@5centos /]# iptables -F

Inserte la descripción de la imagen aquíEsta es la función de reescribir y permanente

Redirigir según el acceso IP del cliente

Cuando el sitio web de la empresa está inicialmente en línea, a veces es necesario permitir que los usuarios accedan a una interfaz, lo que permite a los desarrolladores acceder a la interfaz en línea normal.

[root@5centos html]# vim /etc/nginx/conf.d/default.conf 
server {
    
    
    listen       80;
    server_name  www.ora.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    set $rewrite false;     ##设置变量为 false
    if ($remote_addr = "20.0.0.5"){
    
       ##如果访问IP 为本机 IP
                set $rewrite ture;    ##设置变量为 ture
        }
    if ($rewrite = false){
    
                ##若上面一条不成立的情况,如果变量还为 false 
                rewrite (.+) /fangwen.html;
        }
    location = /fangwen.html {
    
            ##匹配上一条的标记
                root /usr/share/nginx/html;   ##目录位置
                index  fangwen.html;          ##主页名称
        }
    location / {
    
                          ##在 变量为 ture 正常匹配
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

Utilice esta máquina para la prueba de acceso, la página es normal

Inserte la descripción de la imagen aquíAcceso mediante cliente
Inserte la descripción de la imagen aquí

Redirigir según el nombre de dominio y agregar la ruta de la página web

Visite www.nge.com/post y vaya automáticamente a www.ora.com/bbs/post

[root@5centos post]# vim index.html
[root@5centos post]# pwd
/usr/share/nginx/html/bbs/post
[root@5centos post]# 
server {
    
    
    listen       80;
    server_name  www.nge.com;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    location /post {
    
    
        rewrite (.+) http://www.ora.com/bbs$1 permanent;
        }
        location / {
    
    

        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

Inserte la descripción de la imagen aquí

Saltar según coincidencia de parámetros

Visite www.ngecom / 500-100 o 200-50, salte automáticamente a la página de inicio del sitio web de ora

[root@5centos /]# vim /etc/nginx/conf.d/default.conf  
server {
    
    
    listen       80;
    server_name  www.nge.com;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    if ($request_uri ~ ^/500-(100|200)-(\d+).html$){
    
    
        rewrite (.*) http://www.ora.com permanent;
        }
[root@5centos /]# systemctl restart nginx.service

Inserte la descripción de la imagen aquí

Visite PHP Ir a la página de inicio

Visite cualquier archivo PHP en el directorio de carga en el sitio de nge y accederá a la página de inicio de ora

server {
    
    
    listen       80;
    server_name  www.nge.com;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
        local ~* /upload/.*\.php$ {
    
    
                rewrite (.+) http://www.ora.com permanent;
        }

Redireccionamiento de solicitud de URL ordinaria

Visite www.nge.com/1/test.com y vaya a www.ora.com

server {
    
    
    listen       80;
    server_name  www.nge.com;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
        location ~* ^/1/test.html {
    
    
        rewrite (.+) http://www.ora.com permanent;
        }

Supongo que te gusta

Origin blog.csdn.net/Ora_G/article/details/107941899
Recomendado
Clasificación