referer是个防盗链的功能(一个页面,里面的内容来自于别的网站,利用别的网站来为你的网站提供服务
搭建两个网站
现在编写一个盗链的页面
找一个图片
这个页面时放在B的网站上
A去盗链
应该是盗链成功
显然这个文件应该来自于b.com,无形中a.com调用了b.com
用referer模块就可以避免盗链,有效访问,referer就是从哪个页面跳转过来的意思
可以通过valid_referer来判断哪些合法哪些非法
点击B.com跳转到b.com上去
现在要b的网站记录日志
格式定义再nginx主配置文件定义的
重新加载
a网站上点击就跳转到b网站上去
现在通过网站访问一下
点击跳转到B网站,B网站上的日志,看到从前一个页面跳转到自己的页面
这就是http的referer首部
根据首部就可以判断从别的页面的非法用户还是正常访问的用户
为空的就是从浏览器直接输入跳转
/就相当于从浏览器直接访问了
谁是合法的
头部没有referer请求,所以后面收到的日志是空的
servernname 可以是域名,还可以是模式
**什么是合法的,里面为空,
block有referer但是没有内容
server_name 代表你访问网站的域名(可以写通配符,也可以写正则表达式
**
刚才b被盗链了,所以应该再B的机器上加
加上盗链页面,可是想看图片估计被屏蔽了
别的网站就不给你提供服务了
有没有破解盗链的技术
以前前端有这么个写法
下面的图片链接没出来
现在把防盗链屏蔽掉,
ifname代码有问题
应该写成如下
现在就能破解防盗链
不行
看来目前防盗链技术还是不错的
重要的反向代理,不仅作为优秀的服务器,还可以作为反向代理服务器
至少准备三台机器
17 hostname web1
7 做中间代理服务器 nginx
安装httpd
创建一个页面
现在通过中间的代理服务器代理到后端
一个物理网卡绑定两个位置,公网ip和内网ip,30.7就把一块网卡作为桥接模式
17是没有配置网关的,现在再30.7上做反向代理
访问nginx服务器的时候,看到是80端口,就转发啊到后端web服务器上
需要配置反向代理服务器
proxy_pass你把这个地址代理到哪里去
现在把前端请求代理到后端服务器上去,当访问跟的时候,转发到后端服务器上去
成功了
收到的请求是nginx的,不是客户端的
查看nginx的日志
链接数不能太大,因为端口是有限的,所以一般请求控制再3万以内
如果现在是希望只有特定的链接,域名才跳转,访问bbs跳转到forum
redirect 临时重定向
404没有发现,说明其实已经转发了
再后端web服务器建立一个forum
有了这个页面就成功了
下面的更精确就把地址进行修改了
但是如果后端服务器的端口号改成另外一个
502网关出错
nginx就也需要改成8080
如果只针对bbs目录才转发,别的目录不转发
先把端口恢复
没有加斜线
转过去以后没有发现bbs
成功了
说明,说是bbs转发到17,但是并不是针对发到nginx,而是转发到nginx下的bbs
加上斜线之后就可以转发到跟上了(访问bbs的时候转发到跟上
所以这个地方斜线有没有是很重要的
加斜线说明有url,有斜线将来会置换路径、
没有斜线,就不是置换,而是把你访问的域名补加在后面,附加在后面充当url
也可以加上~,正则表达式
发现严重错误,表面说没错误,但实际上是语法错误
proxy_pass不能有url部分,带有正则表达式的
proxy_pass前面不能用正则表达式
不带斜线就可以
只要是前面是正则表达式,后面就不能是url
当后面只要是静态页面,这些就调度到后台机器上,如果不是就不往这里调度
30.17存放图片
希望前端nginx服务器收到图片请求才往后面调度
这个图片明显是转发了
nginx没有图片
别的还是该访问访问
将来就可以 实现动静分离
17当php服务器,6.9作为纯静态的
30.7反向代理服务器,27将来做mysql
30.6做客户端
后端数据库装上
php和httpd在一个服务器上,php配置文件都不需要去修改
配置http文件,让它能去访问fpm
测试一下链接数据库
再定义一个index.php
现在应该是成了
创建静态服务器页面资源
现在就要配置反向代理
现在客户端访问调度的是静态服务器地址
动静分离
面试也会经常问到有没有/线的作用
web服务看到的是反向代理服务器在访问不是真正的用户在访问
将来分析用户从哪里来就不好分析了,没有办法分析行为来源了