Chinaunix首页 | 论坛 | 博客
  • 博客访问: 640750
  • 博文数量: 198
  • 博客积分: 4256
  • 博客等级: 上校
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-15 13:12
文章分类

全部博文(198)

文章存档

2012年(12)

2011年(39)

2010年(135)

2009年(12)

我的朋友

分类: 系统运维

2012-02-28 10:30:59

在Nginx的Rewrite中需要用到$host 和 $request_uri 来做匹配判断。并根据匹配的条件来做重写处理:所以Rewrite规则可以写成: 

  if ($host ~ && $request_uri !~ ^/(api|public-api)) {
               rewrite ^(.*)$ https://$1  permanent;
       }

然而Nginx不支持多重添加判断、&& || 。
当需要用到多条件判断的时候,可以添加一个变量来做判断:

#Nginx Rewrite Double Condition Set.
        set $my_rewt "n";
        if ($host ~   ) {
                set $my_rewt "y";
        }
        if ($uri ~ ^/(api|public)) {
                set $my_rewt "n";
        }
        if ($my_rewt = "y") {
                rewrite ^(.*)$ https://$1 permanent;
        }

虽然增加变量来做判断,增加了配置的长度和复杂性、但却可以符合实际的情况。。那就这样将就着用吧。。
阅读(4317) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~