在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;
}
虽然增加变量来做判断,增加了配置的长度和复杂性、但却可以符合实际的情况。。那就这样将就着用吧。。
阅读(4411) | 评论(0) | 转发(1) |