做负载均衡的时刻可以智能辨认后端办事器状况,固然可以智能地proxy_next_upstream到别的的后端,但照样会按期损掉一些正常的“测验测验性”的连接,比如过了max_fails 次测验测验之后,歇息fail_timeout时光,过了这个时光之后又会去测验测验,这个时刻可以应用第三方的upstream_check模块来在后台按期地主动摸索,类似如许:
- check interval=3000 rise=2 fall=5 timeout=2000 type=http;
如许替代用户正常的连接来进行测验测验的方法进一步保障了高可用的特点。
还有就是在做前端代劳的时刻也是如许的方法,直接proxy_pass到后端即可,比如CDN的场景。
通俗的防盗链是经由过程referer来做,比如:
- location ~* \.(gif|jpg|png|bmp)$ {
- valid_referers none blocked *.example.com server_names ~\.google\. ~\.baidu\.;
- if ($invalid_referer) {
- return 403;
- }
- }
再精细一点的就是URL加密,针对一些用户IP之类的变量生成一个加密URL平日是针对文件下载时刻用到,可以经由过程openresty来写lua脚本或者是accesskey之类的模块来实现。
2.3 变量
nginx琅绫擎支撑正则匹配和变量设备,默认的变量比如remote_addr、request_filename、query_string、server_name之类的,这些组合在一路可以做很多规矩,或者还有日记琅绫擎status、http_cookie等。
还有在进行多域名设备时刻可以用通配符,比如:
- server_name ~^(www\.)?(.+)$;
- root /data/web/$2;
如许就实现了主动进行域名的目次指派。
- set $a 1;
下面这个案例合营if断定来做有更大年夜的用处。
2.4 if断定
nginx琅绫擎支撑一些简单的if断定,然则没有多重逻辑的语法,多个断定前提用起来须要结合变量的方法来实现,比如许可ip地址为10.10.61段和和192.168.100段的用户拜访,其余的拒绝,返回405状况码:
变量方面,比瘸黎置设备摆设变量a=1:
- set $err 0;
- if ( $remote_addr ~ 10.10.61.){
- set $err 0;
- }
- if ( $remote_addr ~ 192.168.100.){
- set $err 0;
- }
- if ( $err = 1){
- return 405;
- }
如许经由过程一个err变量比较奇妙实现了需求。
2.5 error_page
有效到后端proxy的处所须要加上这句话才可以传到状况码到nginx:
具体设备一般是设备到具体的缺点URL页面,比如:
- #返回具体状况码
- error_page 404 403 /4xx.html
- #返回200状况码
- error_page 404 403 =200 /error.html
或者采取callback的方法同一做处理:
- error_page 404 403 = @fallback;
- location @fallback {
- proxy_pass http://backend;
- access_log /data/logs/404_error.log access;
- }
如许在重定向时不会改变URL,然后把404页面直接返回。
是有优先级的,直接 ”=” 的优先级是最高的,一般就用”~”这个符号来匹配php就好了,不过是区分了大年夜小写的:
推荐阅读
年前最后一场技巧盛宴 | 1月27日与京东、日记易技巧大年夜咖畅聊智能化运维成长趋势! 谈及容器技巧,毫不夸大地说,2017年是“Kubernetes之年”。Kubernetes自2014年推出以来,>>>详细阅读
本文标题:谈谈那些实用的Nginx规则
地址:http://www.17bianji.com/lsqh/40297.html
1/2 1