陈奇网络工作室

nginx位置匹配和rewrite规则

建设工作站服务器

位置匹配规则

1 .示例

服务器{

location=\\\{0\\}

[配置A]

}

位置/{

[配置B]

}

location=/images/{

[配置C]

}

location ^~/静态/{

[配置D]

}

localtion~*\\& quot; ( gif|jpg|png ) ) ) )。

[配置E]

}

}

2 .位置语法规则

语法:

location=| ~ | ~* | ^~ | @ /url/{ //注意=,~~,^,@是location的匹配规则,|“显示或

.省略其他配置

}

规则说明:

符号

意义

=

字面上正确一致,如果一致,就退出匹配过程(不进行正规匹配) )。

~

区分开头大小写的正规一致

~*

不区分大小写的正则匹配

^~

开头表示uri以某个哥哥通常的字符串开始,可以理解为与url路径一致

/

共同的一致。 如果没有正则表达式匹配,则所有请求都与匹配

@

用于location内部重定向的变量,而不是常规的位置匹配

~

区分开头大小写的正规一致

多个位置配置匹配的顺序:

首先一致: "="

接下来是匹配: & #039; ^~& #039;

重新匹配:文件位置写入顺序

最后将所有请求传递给通配符。 & #039; /& #039; )

注:每次匹配成功时,都会停止匹配,并根据此匹配的位置处理请求

按照上述例子说明匹配顺序。

首先与第一个位置进行比较,如果匹配,则中止匹配,并按照配置a处理请求。

location=\\\{0\\}

[配置A]

}

然后,与第二个位置相比,匹配项将停止,并根据配置d处理请求。

location ^~/静态/{

[配置D]

}

按顺序对其进行比较,直到找到匹配项,然后按照匹配的配置*处理请求

如果没有与以上匹配的选项,则选择公共选项,并根据匹配的配置b处理请求。

位置/{

[配置B]

}

3 .应用示例

正确的规则(=) )。

location=/{

root /var/ww/html/;

}

此规则表示仅匹配按默认地址访问的请求。 访问地址: http://NginxIP/

匹配url路径( ^~

location ^~/静态/{

root /var/www/html/static;

}

该规则适用于& #039; /static/& #039; 表示只访问以开头的地址的请求。 访问地址: https://cache.yisu.com/upload/information/2020 02 14/32/673.jpg|. gif|*.2020 02 14/32/673.jpg

location ~* /Test/{

root /var/www/html/;

}

该规则表示匹配的url地址有Test访问请求,可以在不区分大小写的情况下进行Test。 访问地址: http://NginxIP/test/

区分大小写() ) )。

位置~/test/{

root /var/www/html/;

}

该规则表示匹配的url地址存在Test访问请求,并且区分大小写。 Test一致,访问地址为http://NginxIP/Test/

默认匹配(所有规则匹配) ) ) )。

位置/{

root /var/www/html;

}

该规则是默认匹配,他可以匹配用默认地址访问的所有链接、访问地址: http://NginxIP/login.html

内部转移( @ )。

location @index_error{

root /var/www/error/

}

该规则适用于& #039; /index/& #039; 意味着与以开头的请求相匹配,如果是链接状态404,则与此规则相匹配

rewrite规则详细信息

nginx的rewrite功能与apache相同,rewrite的主要功能是实现RUL地址的重定向。 PCRE软件支持Nginx的rewrite功能,rewrite模块是ngx_http_rewrite_module模块。 从某种意义上来说,为了美观和通过检索进行友好的检索,也可以说提高了排名等

1 .示例

服务器{

listen 80

server _ namewww.jky ST.xyzjkyst.XYZ;

if($host!=\\\& quot; www.jkyst.XYZ\\& quot; {

Rewrite^/(.* ) $ http://www.jky ST.XYZ/$1permanent;

}

location~~.*\\& quot; ( png|gif|jpg ) {

返回403;

}

}

2.rewrite语法规则

语法:

rewrite regex replacement [flag]

rewrite:rewrite改写的关键字不能省略

regex :这里写了正则表达式

替换:这里是重新内容

标志:这里是最后的标志

标志标记说明:

标志

说明

最后一次

也就是说,apache中的( l )标记表示即使rewrite完成,URL地址也不会改变

布莱克

如果此规则匹配成功,则匹配将停止,不再与后续规则匹配,并且URL地址将保持不变

重定义

302返回临时重定向,浏览器地址中显示跳转后的URL地址

人员

301永久重定向,在浏览器地址栏中显示跳转后的URL地址,Nginx返回响应状态代码301

相关符号说明:

符号

说明

*

表示开头的0或多个字符

表示开头的一个或多个字符

表示开头的0或1个字符

^

表示字符串的开始位置

$

表示字符串的结束位置

$n

表示字符串中最后的第n个参数

同调

通配符,表示任意字符

3 .应用示例

多域名跳转到同一个域名

服务器{

listen 80

server _ namewww.jky ST.xyzjkyst.xyzabc.jky ST.XYZ;

if($host!=\\\& quot; www.jkyst.XYZ\\& quot; {

Rewrite^/(.* ) $ http://www,jkyst.xyz/$1 permanent;

}

}

& #039; abc.jkyst.xyz& #039; 中的地图册条目上单击鼠标右键#039; www.jkyst.xyz& #039; 跳至。 其中& #039; if& #039; 语句用于判断,如果判断结果为true,则执行语句内部的rewrite改写

如果文件不存在,则重定向到指定的文件

服务器{

listen 80

server_name www.jkyst.xyz;

if (! -e $request_filename ) {

rewrite ^/test/$ http://www.jky ST.XYZ/test1/$1permanent;

}

}

如果访问" test "目录的文件或目录不存在,请跳到" test1 "下的此文件或目录,然后跳转以转换URL

服务器{

listen 80

server_name www.jkyst.xyz;

if (! -e $request_filename ) {

rewrite ^/test/(.* ) $ index.html last;

}

}

如果访问" test "目录的文件或目录不存在,请重定向到" index.html "文件,表示跳转不会转换URl

服务器{

listen 80

server_name www.jkyst.xyz;

if (! -e $request_filename ) {

Rewrite^/test/(/([0-9a-z] ) ( [0-9a-z] )/).* ) $ http://www.jky ST.XYZ/test/$1$2$3permanenenet

}

}

切换目录时,表示将原来目录变换为其他目录,【0-9a-z】表示变换后的目录名

禁止访问. sh后缀的文件

服务器{

.其他配置

location~~.*\\& quot; ( sh ) ${

返回405;

}

}

& #039; *.sh& #039; 指示访问的文件将返回405错误

匹配用户浏览器的代理信息

服务器{

listen 80

server_name www.jkyst.xyz;

if($http_user_agent(* ) Android )|)|(iPhone ) }

rewrite ^/test/$ http://www.jky ST.XYZ/test/$1permanent;

}

}

表示当浏览代理与Android和iPhone时重定向的“test”目录下的文件匹配时,将更改访问地址

禁止htaccess

服务器{

位置~//.ht {

deny all;

}

}

4 .文件目录匹配

参数

介绍

-f

判断文件是否具有返回值true

! -f

判断文件中是否存在返回值false

-d

判断目录中是否有返回值true

! -d

判断目录是否有返回值的true不存在

-e

判断文件或目录中是否存在返回值true

! -e

不存在用于确定文件或目录是否具有返回值的true

-x

判断文件是否可执行返回值true能够执行

! -x

判断文件是否可执行返回值true是不可执行的

举例说明:

服务器{

listen 80

server_name www.jkyst.xyz;

if (! -e $request_filename ) {

rewrite ^/test/$ http://www.jky ST.XYZ/test1/$1permanent;

}

}

判断文件或目录是否存在

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3