前言:
现时咱们对“nginx转发rewrite”可能比较珍视,小伙伴们都需要了解一些“nginx转发rewrite”的相关内容。那么小编也在网上收集了一些有关“nginx转发rewrite””的相关知识,希望你们能喜欢,咱们快快来学习一下吧!Nginx重定向:
一般设置return 403;之后,网页的页面会出现:
403 Forbidden
----------------
nginx
这种显示。
---我是华丽的分隔线---
.点匹配任何单字符
*匹配前面的字符零次或者多次。
+匹配前面的字符1次或者多次,也就是最少1次,相当于{1,}
?匹配前面的字符0次或者1次,相当于{0,1}
---我是华丽的分隔线---
正则表达式配置的语法:
rewrite regex replacement [flag]
Regex使用pcre正则表达式。
regex是^/(.*)是一个正则表达式,表示匹配所有,匹配完整的域名和后面的路径地址。
---我是华丽的分隔线---
目录对换/123456/xxxx->/xxxx?id=123456:
rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;
\d匹配一个数字字符,等价于[0-9]
+加匹配前面的子表达式一次或者多次。
点.匹配除了\n之外的任何单个字符
last:相当于apache里面的[L]标记,表示完成rewrite。
---我是华丽的分隔线----
禁止访问以.sh、.flv、.mp4为文件后缀的URL:
location ~ .*\.(sh|flv|mp4)?$ {return 403;}
? 匹配前面的表子达式零次或者一次。
\. 将下一个字符标记为一个特殊字符。
----我是华丽的分隔线----
网站信息防盗链:
在我们部署网站后,网站中的静态资源,比如网站中的图片,可以被其他网站大量盗用。为了解决这个问题,可以根据referer信息进行防盗链的设置,以免网站资源被非法盗用,造成经济损失。
HTTP协议中有一个表示“页面或者资源”来源的请求头,这个请求头我们叫做Rerferer。Referer表示请求是从哪个网址发出来的。
防盗链功能是基于HTTP协议支持的Referer机制,通过Referer跟踪请求来源,对来源进行识别和判断。
防盗链的配置可以在任意location{}下配置,不能在server{…}中配置。
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked *.yourdomain.com;
if($invalid_referer) {
rewrite ^/(.*) ;
}
}
~* \.(gif|jpg|png|swf|flv)$:这段正则表达式表示匹配不分大小写,以.gif、.jpg、.png、.swf、.flv等结尾的文件。
valid_referers设置信任的网站,可以正常使用图片。
后面的网站网址或者域名:referer中包含的字符串的网址。
if语句:如果链接的来源域名不在valid_referers的列表中,那么$invalid_referer为1,执行后面的操作,即进行rewrite重写。
防盗链的指令是valid_referers。可选值是none,blocked,server_name。默认值是none。
valid_referers指令会根据Referer Header头的内容,分配一个值为0或者1给变量$invalid_referer。如果Referer Header不符合valid_referers设置的有效referer,那么变量$invalid_referer将被设置为1。
valid_referers指令的参数可以是:
①:none 表示无Referer值的情况。
②: blocked 表示Referer值被防火墙伪装。
③:server_name 表示一个或者多个主机名称,server_name中可以使用通配符*星号。
介绍http头referer信息:
①:当浏览器向web 服务器发送请求时一般都会带上referer,包含当前请求页面的来源地址,即表示当前页面是通过这个来源页面里面的链接进入的。
②:后台服务器可以根据获取的referer信息,判断是否是自己信任的网站地址。如果是,则放行继续访问。如果否,则可以返回403状态信息。
③:服务端一般使用referer请求头识别访问来源,以进行统计分析、日志记录和缓存优化等。
valid_referers:
查看referer,自动和valid_referers后面的变量进行匹配,如果匹配到,就将invalid_referer变量置为0(false,合法)。如果没有匹配到,就将invalid_referer变量置为1(true,不合法)。匹配的过程中不区分大小写。
valid_referers的语法:
valid_referers none | blocked | server_names | string
none:如果Header中的Referer值为空,允许访问。
blocked: 在Header中的Referer不为空,但是该值被防火墙或者代理进行伪装过,如不带http://、https://等协议头的资源,允许访问。
server_names:指定具体的域名或者IP,可以使用通配符*。
string:支持正则表达式、带*的字符串。如果是正则表达式,需要以~开头表示。表达式将与http://或者https://之后的文本进行匹配。
使用if判断$invalid_referer,0(false,合法,不进入if块)/1(true,不合法,进入if块)。
鼓励的话语:泰山崩于前,面不改色;大海啸于后,而不变声,为大丈夫!
标签: #nginx转发rewrite #apacheurl去掉后缀名 #nginxrewrite模式 #nginx重写路径 #nginxrewirte作用