欢迎光临
我们一直在努力

详细讲解nginx的重写应用以及Nginx的高级重写规则。

Nginx提供的全局变量或者自己设置的变量,结合正则表达式和标志位,可以实现url重写和重定向。

$request_filename:当前请求的文件路径,由root或alias指令和URI请求生成。
$request_URI:包含请求参数的原始URI,但不包含主机名,例如:“/foo/bar.php?arg=baz。
重写是实现URL重写的关键指令。根据regex(正则表达式)段的内容,重定向到替换段,在末尾标记。

括号()之间的匹配可以在后面用$下标引用。例如,1表示第一个括号匹配,1表示第一个括号匹配,1表示第一个括号匹配,第二个括号匹配。

重写的主要功能是重写URL。Nginx的重写规则采用PCRE Perl兼容正则表达式的语法进行规则匹配。比如使用Nginx的重写功能,那么在编译Nginx之前,应该先编译安装PCRE库。Rewrite主要实现url地址重写和重定向,这是将传入的web请求重定向到其他URL的过程。

Uninitialized _ variable _ warning在http,server上打开/关闭,如果这个指令用于打开和关闭未初始化变量的警告信息。默认值为开。没有人设置变量值。
该指令用于定义一个变量并为其赋值。
$ scheme: http协议(比如http,https)。
$host:请求主机头字段,否则为服务器名。
$remote_user:已被Auth Basic模块验证的用户名。
这个重写规则执行后,最后一个标签会再次请求它所在的server{…}标签,break标签会在这个规则匹配后停止匹配,不再匹配后面的规则。

返回无人参与的服务器,如果是,则使用该位置来结束规则的执行,并将状态代码返回给客户端。代码的值可以是204、400、402、406、408、410、411、413、416和500~504。此外,非标准状态代码444表示连接结束,不发送任何报头。
$limit_rate:这个变量可以限制连接速率。
$ uri:请求参数没有当前的uri,$ uri不包含主机名,如“/foo/bar.html”。
$server_addr:服务器的地址,可以在完成一个系统调用后确定。
$server_port:对服务器的请求的端口号。
位置/{ #测试链接http://192.168.88.38/test1与位置/{}重写/test1/test2相匹配;#被重写为/test2,并继续执行rewrite/test2/test3重写;#重写为/test3,没有可执行重写模块指令down,于是发起位置匹配,匹配到位置/test3{},最后返回http200和/test3}位置/test2 { return 200 “/test2 “;} location/test3 { return 200 “/test3 “;}
last和break的区别在于last开始一个新的位置匹配,而break不会。

if($ http _ user _ agent ~ msie){ rewrite^(.*)$/msie/$ 1 break;}//如果UA包含“MSIE”,重写请求If($ http _ cookie ~ * ” id =([;]+)(?:;| $)”){ set $ id $ 1;}//如果cookie匹配正则性,则设置变量$id等于正则引用部分If($ request _ method = post){ return 405;}//如果提交方法是POST,则返回状态405(Methodnotallowed)。Return不能返回301,302 if($ slow){ limit _ rate 10k;}//限速,$slow可以设置if(!-f $ request _ filename){ break;proxy _ pass http://127 . 0 . 0 . 1;}//如果请求的文件名不存在,反向代理到localhost。这里的中断也是为了停止重写检查If($ args ~ post = 140){重写http://mysite.com/permanent; }//如果querystring包含“post = 140”,永久重定向到mysite.com
在if指令中,可以使用全局变量。这些变量是:
并且只能处理域名后面的字符串,传递的参数除外。

$remote_port:客户端的端口。
$document_root:当前请求在根指令中指定了一个值。
$content_type:请求头中的内容类型字段。
$ document_uri:与$uri相同。
变量值可以是文本、变量或变量和文本的组合,文本应该用引号括起来。

$request_method:客户端请求的动作,通常是GET或POST。
$server_name:服务器名称。
二。重写相关指令指令中断if (condition) {…}重写正则表达式替换标志
系统默认值可用范围函数
如果没有人、服务器、位置完成当前的规则集,并且不再处理重写指令,则需要将其与最后一个进行区分。
没有人类服务器,使用位置来检查是否满足某个条件。如果是,将执行花括号中的语句。不支持嵌套和多个条件。或处理
参数:break,用于停止重写模块的指令。其他模块不受影响。

一、重写简介
类似于重写定位功能,可以跳转。主要区别在于,重写通常用于更改路径以获取同一域名中的资源,而位置控制访问作为一类路径的反向代理,可以proxy_pass到其他服务器。

如果位置/{0}中的最后一个被更改为break并重写为/test3,则它不会重写为/test4,并且该位置不会被初始化。最后,如果没有匹配的资源,将返回http404。

$server_protocol:请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
二、重写的作用和应用场景
重写的主要功能是重写URL。Nginx的重写规则采用了Pcre,perl兼容的正则表达式语法规则。如果需要Nginx的重写功能,需要在编译Nginx之前编译安装PCRE库。通过重写规则,可以实现标准化的URL,并且可以根据URL的变量来选择配置。

rewrite^/(.*)http://www . cjzzc . com/$ 1 permanent;
在上面的指令中,rewrite是一个固定的关键字,表示启动了一个重写匹配规则,regex部分是/(。*),这是一个正则表达式,表示已经进行了所有匹配,匹配成功后跳转到http://www.cjzzc.com/.一美元这里是永久的;以前面regex部分中括号中的内容结束;这是一个永久的301重定向标记,也就是说,它将跳转到下面的http://www.cjzzc.com/地址。

根据配置文件中的顺序执行指令。请注意,覆盖表达式仅对相对路径有效。这条指令根据表达式重定向URIs,或者修改字符串。根据配置文件中的顺序执行指令。请注意,覆盖表达式仅对相对路径有效。

$remote_addr:客户端的IP地址。
last break标签的实现功能与last break标签类似,但两者略有不同。使用alias命令时必须使用last标记,使用proxy_pass命令时必须使用break标记。

服务器,位置,如果此指令根据表达式重定向URI,或者修改字符串。
旗帜的最后断裂是直接和永久的。
朔明
匹配此规则后,继续匹配新的地点URI规则。
规则匹配后将被终止,任何后续规则都不再匹配。
返回302临时重定向,浏览器地址栏会显示跳转后的URL地址。
返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。
在上面的徽标中,last和break用于重写URL。浏览器地址栏的URL地址不变,但是服务器访问的程序和路径变了。而重定向永久,浏览器地址会显示跳转后的URL地址。

$ content_length:请求头中的内容长度字段。

分享到: 更多 (0)

—— 专注企业营销推广 ——

百度推广抖音运营