rewrite重写规则与Nginx应用--盗链图片

续上一篇博客还环境
rewrite重写规则

调整用户浏览的URL,看起来规范 合乎开发及产品人员的需求
为了让搜索引擎收录网站内容,让用户体验更好 企业会将动态URL地址伪装成静态地址提供服务
网站更换新域名后 例如,访问京东的360buy.com会跳转到jd.com
根据特殊的变量、目录、客户端信息进行跳转 
URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中
301 redirect: 301 代表永久性转移(Permanently Moved)
302 redirect: 302 代表暂时性转移(emporarily Moved )
ps:这里也顺带记住了两个比较相近的英语单词(permanently、temporarily),嘻哈!

301与302详解:

 详细来说,
 301302状态码都表示重定向,
 就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,
 这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。
 他们的不同在于:
 301:表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),
    搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;
 302:表示旧地址A的资源还在(仍然可以访问),
 这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
 rewrite    <regex>    <replacement>    [flag];
 关键字      正则        替代内容          flag标记
关键字:其中关键字error_log不能改变
正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag标记:rewrite支持的flag标记

flag标记说明:
last  #本条规则匹配完成后,继续向下匹配新的location URI规则
break  #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
例子:
rewrite ^/(.*) http://www.czlun.com/$1 permanent;

说明:                                        

rewrite为固定关键字,表示开始进行rewrite匹配规则
regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址
replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的内容。匹配成功后跳转到的URL。
flag部分 permanent表示永久301重定向标记,即跳转到新的 http://www.czlun.com/$1 地址上
  .  匹配除换行符以外的任意字符
    ?  重复0次或1 "do(es)?" do does doeses
    +  重复1次或更多次 "ol+" ol oll olll o
    *  重复0次或更多次 "ol*" o ol oll
    \d :匹配数字
    ^  匹配字符串的开始
    $  匹配字符串的结束
    {n}  重复n次
    {n,}  重复n次或更多次
    [c]  匹配单个字符c
    [a-z]  匹配a-z小写字母的任意一个

例如:

[root@foundation78 ~]# curl -I www.taobao.com
访问淘宝,发现淘宝做了重定向(注意:需要连接无线)
那如何自动实现https加密呢?
 www.westos.org(实质:http://www.westos.org) 自动跳转到 https://www.westos.org  即:http ---> https

【server2】

location 是在 server 块中配置。可以根据不同的 URI 使用不同的配置(location 中配置),来处理不同的请求。

【1】

cd /usr/local/nginx/conf/
vim nginx.conf
server {
        listen 80;
        server_name www.westos.org;
 	rewrite ^/(.*)$ https://www.westos.org/$1;   ##后面跟$1,都会自动调转到https://www.westos.org/$1的网址

}
 nginx -s reload

测试:
物理机:
vim /etc/hosts
172.25.78.2 www.westos.org
vim  /etc/resolv.conf 
nameserver 114.114.114.114

curl -I www.westos.org
curl -I www.westos.org/test

vim vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
在这里插入图片描述
vim /etc/hosts
在这里插入图片描述
vim /etc/resolv.conf
在这里插入图片描述
在这里插入图片描述
【2】

 vim vim /usr/local/nginx/conf/nginx.conf
rewrite ^/(.*)$ https://www.westos.org/$1 permanent;  ##永久重定向(可以缓存,临时的不允许缓存),表示永久301重定向标记,即跳转到新的 https://www.westos.org/$1 地址上
 nginx -s reload

测试:
curl -I www.westos.org/test.html
curl -I www.westos.org/

vim vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【3】增加一个域 bbs.westos.org;

mkdir /bbs
vim /bbs/index.html
<h1>bbs.westos.org</h1>

vim /usr/local/nginx/conf/nginx.conf

129: server_name  www.westos.org bbs.westos.org;
140   location / {
141      root   /bbs;
142      index  index.html ;
143   }
150: rewrite ^/bbs$ https://bbs.westos.org/index.html permanent; 
 ##以bbs结尾ie的都会调转到https://bbs.westos.org/index.html
nginx -s reload

测试:
vim /etc/hosts
172.25.78.2 www.westos.org bbs.westos.org
curl -I www.westos.org/bbs

在这里插入图片描述
在这里插入图片描述
vim vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【4】

vim /usr/local/nginx/conf/nginx.conf
145 server {
146         listen 80;
147         server_name www.westos.org  bbs.westos.org;
148         if ($host = "bbs.westos.org") {    #$host  请求主机头字段,否则为服务器名称 
149                 rewrite ^/(.*)$ http://www.westos.org/bbs/$1 permanent;  
150 
151 }
152          location / {
153             root   /web;
154             index  index.html ;
155         }
156 
157 
158 }
159 }

cd /web/ ---> ls
cp -r /bbs/ . --->ls
nginx -s reload

curl -I bbs.westos.org/
curl -I bbs.westos.org/bbs/
curl -I bbs.westos.org/bbs/test.html

在这里插入图片描述
vim vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【5】

vim /usr/local/nginx/conf/nginx.conf
145 server {
146         listen 80;
147         server_name www.westos.org  bbs.westos.org;
148         rewrite ^/bbs$ https://bbs.westos.org/index.html permanent;  #表示访问bbs.westos.org并且以bbs结尾的,都定向到https://bbs.westos.org 
注释149152
153          location / {
154             root   /web;
155             index  index.html ;
156         }
157 
158 
159 }
nginx -s reload

测试:
规则写到了443:所以用https来访问
https://bbs.westos.org

vim vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Nginx应用—图片盗链,防盗链

模拟盗链

实验环境

server1  盗链主机(server1盗链server2的资源)
server2  防盗链主机
物理机:客户端主机
 

这里servre1的环境用蓝色表示
server2用黑色表示

【server1】(没有nginx的话,自己再编译一个)
【1】用server1主机来进行盗链操作,

建立默认的访问页
mkdir /web
vim /web/index.html
<html>

<body>
<br>盗链图片</br>
<img src="http://www.westos.org/vim.jpg">

</body>


</html>

在这里插入图片描述
【2】修改虚拟主机配置:

vim /usr/local/nginx/conf/nginx.conf
115 server {
116         listen 80;
117         server_name daolian.westos.org;
118         charset utf-8;   ##加入编码方式,不加这个参数网页上看到的汉字是乱码
119         location / {
120             root   /web;
121             index  index.html ;
122         }
123 
124 }
125 }
nginx
nginx -t
nginx -s reload

vim vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
在这里插入图片描述

【server2】
server2上需要把vim.jpg资源放到/web目录

cd /web/ ---> ls ##有vim.jpg  (没有图片的话,自己移一个图片到/web目录下)

在这里插入图片描述
vim /usr/local/nginx/conf/nginx.conf

145 server {
146         listen 80;
147         server_name www.westos.org;
148         location / {
149             root   /web;
150             index  index.html ;
151         }
152 
153 }
nginx -s reload

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【物理机,server1,server2】在物理机和各节点都配置解析

vim /etc/hosts
172.25.78.1 server1 daolian.westos.org

在这里插入图片描述
物理机测试:

浏览器中访问daolian.westos.org
##可以看到我们访问的是server1的ip对应的域名,
但是拿到的却是server2的资源(因为server1没有,所以叫盗链)

在这里插入图片描述
模拟防盗链

【server2】

vim /usr/local/nginx/conf/nginx.conf
153          location ~* \.(gif|jpg|png|jpeg)$ {
154                 root    /web;
155                 valid_referers none blocked www.westos.org;
156                 if ($invalid_referer) {
157                         return 403;
158                 }
159         }

nginx -s reload

在这里插入图片描述
在这里插入图片描述
【server1】默认发布下的内容,依旧是盗链的访问页
vim /web/index.html

<html>

<body>
<br>盗链图片</br>
<img src="http://www.westos.org/vim.jpg">

</body>


</html>

测试:daolian.westos.org
当访问域名为www.westos.org时正常访问,否则返回一个不可见小图标

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值