目录
一、ngx_http_rewrite_module作用:
二、ngx_http_rewrite_module模块指令:
1. if 指令:
1.1 格式:
1.2 判断:
1.3 示例:
2. return:
2.1 格式:
2.2 示例:
3. rewrite :
3.1 格式:
3.2 flag标记说明:
3.3 示例:
三、防盗链:
1. valid_referers 信息分类:
2.盗链示例:
2.1.服务器配置:
2.2 小偷服务器配置:
2.3 客户端配置:
3. 设置防盗链:
3.1 服务器添加防盗链:
一、ngx_http_rewrite_module作用:
用于实现URL的重写,URL的重写是非常有用的功能,比如它可以在我们改变网站结构之后,不需要客户端修改原来的书签,也无需其他网站修改我们的链接,就可以设置为自动访问
二、ngx_http_rewrite_module模块指令:
1. if 指令:
用于条件匹配判断,并根据条件判断结果选择不同的Nginx配置,可以配置在server或location块中进行配置,Nginx的if语法仅能使用if做单次判断,不支持使用if else或者if elif这样的多重判断
1.1 格式:
if (条件匹配) {
action
}
1.2 判断:
= #比较变量和字符串是否相等,相等时if指令认为该条件为true,反之为false
!= #比较变量和字符串是否不相等,不相等时if指令认为条件为true,反之为false
~ #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~ #区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假
~* #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~* #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真
-f 和 !-f #判断请求的文件是否存在和是否不存在
-d 和 !-d #判断请求的目录是否存在和是否不存在
-x 和 !-x #判断文件是否可执行和是否不可执行
-e 和 !-e #判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接)
1.3 示例:
server{
listen 80;
listen 443 ssl;
ssl_certificate /apps/nginx/conf.d/ssl/www.wzw.com.crt;
ssl_certificate_key /apps/nginx/conf.d/ssl/www.wzw.com.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
server_name www.wzw.com;
root /apps/nginx/html;
location /main {
index index.html;
default_type text/html;
if ( $scheme = http ){
echo "if-----> $scheme"; 使用什么协议输出对应协议,需要证书哦
}
if ( $scheme = https ){
echo "if ----> $scheme";
}
}
}
2. return:
return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置
2.1 格式:
www.kgc.com/test/
404
return code; #返回给客户端指定的HTTP状态码
return code [text]; #返回给客户端的状态码及响应报文的实体内容,可以调用变量,其中text如果有空格,需要用单或双引号
return code url; #返回给客户端的URL地址
2.2 示例:
location /test {
default_type text/plain;
return 302 http://www.baidu.com;
}
location /testt {
default_type text/plain;
return 301 http://www.wzw.com/pc;
}
301 缓存在磁盘上,建议使用301
302 没有缓存 , 服务器断开无法重定向
3. rewrite :
3.1 格式:
rewrite regex replacement(www.baidu.com) [flag];
正则匹配原始访问url 替代你想让客户访问的 标志 ()premanent301
3.2 flag标记说明:
- permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。
- redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址。
- break :本条规则匹配完成即终止,不再匹配后面的任何规则,且URI不会发生变化。
- last :本条规则匹配完成后,继续向下匹配新的location URI规则。
3.3 示例:
server{
listen 80;
listen 443 ssl;
## 监听443
ssl_certificate /apps/nginx/conf.d/ssl/www.wzw.com.crt;
## 指向包含当前虚拟主机和CA的两个证书信息的文件
ssl_certificate_key /apps/nginx/conf.d/ssl/www.wzw.com.key;
## 当前虚拟主机使用的私钥文件,一般是key文件
ssl_session_cache shared:sslcache:20m;
## 在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小,一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称
ssl_session_timeout 10m;
## 客户端连接可以复用ssl session cache中缓存的有效时长
server_name www.wzw.com;
root /apps/nginx/html/;
location / {
root /apps/nginx/html;
if ( $scheme = http ){
rewrite ^/(.*)$ https://www.wzw.com/$1 redirect; ##302跳
## 当$scheme为http时,重写为https ^/(.*)$以/后所有 $1后向引用
}
}
}
三、防盗链:
防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名。
1. valid_referers 信息分类:
- none:#请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息。
- blocked:#请求报文有referer首部,但无有效值,比如为空。
- server_names:#referer首部中包含本主机名及即nginx 监听的server_name。
- arbitrary_string:#自定义指定字符串,但可使用*作通配符。示例: *.kgc.org www.kgc.*
- regular expression:#被指定的正则表达式模式匹配到的字符串,要使用~开头,例如:~.*\.kgc\.com
2.盗链示例:
2.1.服务器配置:
把图片放到/apps/nginx/html 下
vim /apps/nginx/conf.d/www.conf
server{
listen 80;
server_name www.wzw.com;
root /apps/nginx/html;
}
2.2 小偷服务器配置:
192.168.88.101机器:
systemctl start nginx
systemctl stop firewalld
setenforce 0
vim /apps/nginx/html/index.html
<html>
<body>
<h1>this is yunjisuan </h1>
<img src="http://www.wzw.com/2.jpg"/> ##盗取www.wzw.com的图片
</body>
</html>
vim /apps/nginx/conf/nginx.conf
server_name www.dsj.com ##基于域名的服务名称
vim /etc/hosts
192.168.88.100 www.wzw.com ##域名解析
2.3 客户端配置:
C:\Windows\System32\drivers\etc\host
打开添加 www.dsj.com 的IP地址。
192.168.88.101
真机测试:
3. 设置防盗链:
3.1 服务器添加防盗链:
server块中添加防盗链:
vim /apps/nginx/conf.d/www.conf
location ~* \.(jpg|png|gif|swf|jpeg|bmp)$ {
root /apps/nginx/html;
valid_referers none blocked *.wzw.com wzw.com;
if ( $invalid_referer ) {
return 403;
}
}
这时客户端再次访问盗图服务器时,图片会报403文章来源:https://www.toymoban.com/news/detail-682084.html
文章来源地址https://www.toymoban.com/news/detail-682084.html
到了这里,关于nginx重写与防盗链的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!