Nginx多重if判断的实现

首先

Nginx不支持 and、or、&&、|| 这类语法;且不支持if的多重嵌套,例如:

if (aaa) {
    if (bbb) {
       exec @ccc;
   }
}

 

多重判断如何实现呢?

最近要做个配置,将移动设备访问网页时跳转到手机版面。需要判断2个部分才做跳转:一、客户端来源为移动设备;二、访问指定域名业务时。

 

实现方法一

每个域名配置单独的server{},这样配置比较简明;但缺点是配置文件会写很长,要修改多次。(比较啰嗦)

 

实现方法二

全部域名配置一个server{},进行多重判断;这样配置可能稍微复杂一点,但配置文件不会那么啰嗦。

server {
    listen 80;
    server_name _;
    set $domain $host;
    root /webapp/$domain;

    ...其它略

    if ($http_user_agent ~* "UCBrowser|Android|Iphone|Ipad|Ipod|BlackBerry|Windows Phone|Symbian(.*)Series60/3|Symbian(.*)Series60/5") {
        set $mobile '1';
    }

    if ($host !~* ^(app1|app2|app3)\.google\.com) {
        set $mobile '0';
    }

    if ($mobile = 1) {
        rewrite "^/index.html$" /mobile/index.html last;
    }

    ...其它略

}

 

后续

移动设备的 http_user_agent 还不全,慢慢收集~

转载于:https://www.cnblogs.com/tutuye/p/4499403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值