Directorio de artículos
- Función de reescritura de reglas
- Volver a escribir
- Ubicación
- ¡Dale! ¡Mostrar! !
-
- Realice la función de redireccionamiento según el nombre de dominio
- Redirigir según el acceso IP del cliente
- Redirigir según el nombre de dominio y agregar la ruta de la página web
- Saltar según coincidencia de parámetros
- Visite PHP Ir a la página de inicio
- Redireccionamiento de solicitud de URL ordinaria
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
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.
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
último gráfico frente a rotura
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
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
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
Acceso mediante cliente
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;
}
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
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;
}