Nginx从入门到放弃(二)

Nginx从入门到放弃(二)
Ngnix反向代理
Nginx的方向代理,用户请求来的时候经过了nginx,回去也经过nginx,我们称之为隧道模式
这种模式nginx很容易成为瓶颈
在这里插入图片描述
如果要做成来的时候经过ngixn,回去的时候,后端服务器直接返回给用户,不再经过nginx,这叫DR模式
LVS就是这种
LVS直接被集成到Linux内核了

nginx在企业应用中的常见应用,是作为方向代理服务器
在这里插入图片描述
反向代理配置关键字:proxy_pass
反向代理群组配置upstream,weight, down,backup

反向代理常见的算法:
1)轮询,无法保持会话(用户session)
2)ip_hash,IP哈希,相同的来源IP,指向相同的后端服务器,很可能会有流量倾斜的问题,而且移动的用户session很可能无法保持
3)least_conn,最少连接数
4)url_hash,根据用户访问的url来转发流量到后端(同样会存在用户session的问题),适用于不需要维持会话连接,访问固定资源的时候
5)fair,根据后端响应时间来转发请求

session问题一般:
1)JAVA的SpringSession框架,可以使用redis解决这个问题
2)下发token,使用专门的服务器做权限认证,无状态会话保持

动静分离
静态资源不用去后端机器找,直接放在前面nginx的服务器,减少数据请求和网络传输的时间
在这里插入图片描述
比如,我们把js, img, css这些静态资源都放在html下面,然后写一个location的匹配规则就行,请求到nginx的时候,就直接放回这些静态资源了
location 后面的:

 ~*   开头表示不区分大小写的正则匹配 
  ~  开头表示区分大小写的正则匹配 
/    通用匹配,任何请求都会匹配到
 =  开头表示精确匹配 
 ^~  开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,
 可以被规则^~ /static/ /aa匹配到(注意是空格)
 !~ 区分大小写不匹配
 !~* 不区分大小写不匹配
 匹配的优先级是,约精确的优先匹配
 首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求

rewrite
上面截图的rewirte规则写死了,重定向到一个页面
我们在浏览器输入http://abc.com/2.html ,访问到的实际是http://abc.com/index.jsp?pageNum=2,并且在浏览器显示的是2.html
换成写成一个正则的匹配是location ^/([0-9]+).hmtl$ /index.jsp?pageNum=$1 break;
break表示匹配到了就直接返回,不再往下匹配
rewrite规则后面,除了break,还有last, redirect,permanent这几个参数
如果是last就会继续往下匹配,匹配到最新的那个再返回
redirect ,临时重定向,会把真实的地址给带出来,用户访问2.html会在浏览器地址栏看到index.jsp?pageNum=2
这样可以对用户隐藏我们的的后端参数
permanent 永久重定向,效果跟redirect一样

nginx防盗链

对Nginx下所有项目的指定资源不同文件类型进行防盗链
比如对jpg、png、mp4等资源进行防盗链

location ~* \.(jpg|png|pm4)$ { #需要防盗链资源的文件类型
  valid_referers none blocked  abc.com; #这是可以盗链的域名或IP地址,一般情况可以把google,baidu,sogou,soso,bing,feedsky,zhuaxia,photozero等域名放进来
  if ($invalid_referer) { 
    #这样设置能够防盗链,不断地302重定向很多次,可能会加重服务器的负担,所以不建议这么做,除非有单独的图片服务器支持
    #rewrite ^/ https://www.abc.com:90/picture/images/details-image-1.jpg; #如果有人非法盗链资源,则返回一张防盗链的图片, ^/匹配所有盗链请求
    return 403; #或者返回403错误代码
  } 
}

对指定目录或者指定项目目录进行防盗链
比如Nginx下有3个项目,A、B、C,可以对A目录下的images进行防盗链,也可以对B目录下的images进行防盗链,也就是说,对指定目录进行防盗链。

location /picture/images/{ #在html目录下的picture项目下的images目录进行防盗链
    valid_referers none blocked server_names abc.com;#允许访问目录的域名或IP
    if ($invalid_referer){
    return 403;
    } #不允许访问返回403
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值