标签:图片 jpg stream 操作 自动 serve 一个 dfs 正则
6.15 if正则表达式的模式匹配操作
~:区分大小写的模式匹配检查
~:不区分大小写的模式匹配检查
!~和!~:对上面两种测试取反
测试指定路径为文件的可能性(-f,!-f)
测试指定路径为目录的可能性(-d,!-d)
测试文件的存在性(-e,!-e)
检查文件是否有执行权限(-x,!-x)
6.15.1基于浏览器实现分离案例:
//实现火狐浏览器访问
if ($http_user_agent ~ Firefox) {
rewrite ^(.*)$ /firefox/$1 break;
}
//实现IE浏览器访问
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
//实现谷歌浏览器访问
if ($http_user_agent ~ Chrome) {
rewrite ^(.*)$ /chrome/$1 break;
}
注意:以下本人实现用谷歌浏览器访问的,在html里要创建Chrome目录,把imgs移动到Chrome目录下。
6.15.2 防盗链案例
location ~* \.(jpg|gif|jpeg|png)$ {
valid_referer none clocked www.idfsoft.com;
if ($invalid_referer) {
rewrite ^/ http://www.idfsoft.com/403.html;
}
}
集群:就是多台服务器做同样一件事
6.16 反向代理与负载均衡
nginx通常被用作后端服务器的反向代理,这样就可以很方便的实现动静分离以及负载均衡,从而大大提高服务器的处理能力。
nginx实现动静分离,其实就是在反向代理的时候,如果是静态资源,就直接从nginx发布的路径去读取,而不需要从后台服务器获取了。
但是要注意,这种情况下需要保证后端跟前端的程序保持一致,可以使用Rsync做服务自动同步或者使用NFS,MFS分布式共享存储。
Http Proxy 模块,功能很多,最常用的是 proxy_pass 和proxy_cache
如果要使用proxy_cache,需要集成第三方的ngx_cache_purge模块,用来清除指定的URL缓存。这个集成需要在安装nginx的时候去做,如: ./configure --add-module=../ngx_cache_purge-1.0 ......
nginx通过upstream模块来实现简单的负载均衡,upstream需要定义在http段内在
在upstream段内,定义一个服务器列表,默认的方式是轮询,如果是确定同一个访问者发出的请求总是由同一个后端服务器来处理,可以设置ip_hash,如:
upstream web {
#ip_hash; #ip_hash 是只能固定一个访问,不能刷新访问
server 192.168.209.13 weight=5;
server 192.168.209.14 weight=5;
}
注意:这个方法本质还是轮询,而且由于客户端的ip可能是不断变化的,比如动态ip,代理,×××等,因此ip_hash并不能完全保证同一个客户端总是由同一个服务器来处理。
定义好upstream后,需要在server段内添加如下内容:
server {
location / {
proxy_pass http://web;
}
}
访问效果:
标签:图片 jpg stream 操作 自动 serve 一个 dfs 正则
原文地址:http://blog.51cto.com/13833047/2169836