nginx的配置文件可以看成是一个程序,一个按照程序员思维习惯进行语法设置的nginx配置程序,编写简单便于理解,而且配合着各种变量和if判断等指令可以灵活的做各种策略设置。工作中,每当一个请求过来,都会执行一遍配置文件,配置文件的各个变
$host = "abc.def.com" $request_uri = "aaa.html" $http_user_agent ~* "mobile" $http_user_agent ~* "android"
经过查询了解,nginx配置文件是不支持if嵌套、并且不支持类似shell 的 && 和 || 的写法 ,这样就必须想别的办法解决,是的,可以变量做flag标记的方式来解决,网上也有很多例子,最后我的写法如下:
set $flag 0; if ( $host = "abc.def.com" ){ set $flag "1"; } if ( $request_uri = "/aaa.html" ){ set $flag "${flag}1"; } if ( $http_user_agent ~* "mobile" ){ set $flag "${flag}1"; } if ( $http_user_agent ~* "android" ){ set $flag "${flag}1"; } if ( $flag = "1111" ){ rewrite ^/(.*)$ http://www.hig.com redirect; }
“运维网咖社”原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://www.net-add.com
©本站文章(技术文章和tank手记)均为社长"矢量比特"工作.实践.学习中的心得原创或手记,请勿转载!
欢迎扫描关注微信公众号【运维网咖社】
社长"矢量比特",曾就职中软、新浪,现任职小米,致力于DevOps运维体系的探索和运维技术的研究实践. |