nginx 不支持 if 嵌套,也不允许在 if 中使用逻辑判断,会报如下错误:
nginx: [emerg] "if" directive is not allowed
当业务需要多个条件判断时,可以借助中间变量来实现
如:我们的网站在 pc 端有多个子域名, 而移动端只有一个域名,对应关系如下:
要实现的效果:在移动端访问 pc 域名时 301 跳转到对应的移动端域名
nginx 的重写规则如下:
# 是否为移动端 set $mobile 0; if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) { set $mobile 1; } # 获取子域名 set $prefix 1; if ($host ~* "sub1.test.com") { set $prefix 2; } if ($host ~* "sub2.test.com") { set $prefix 3; } if ($host ~* "sub3.test.com") { set $prefix 4; } set $sign "${mobile}${prefix}"; if ($sign = 11) { rewrite ^(.*) http://m.test.com$1 permanent; } if ($sign = 12) { rewrite ^(.*) http://m.test.com/sub1$1 permanent; } if ($sign = 13) { rewrite ^(.*) http://m.test.com/sub2$1 permanent; } if ($sign = 14) { rewrite ^(.*) http://m.test.com/sub3$1 permanent; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍nginx配置ssl实现https的方法示例,包括了nginx配置ssl实现https的方法示例的使用技巧和注意事项,需要的朋友参考一下 环境说明 服务器系统:Ubuntu 18.04 64位 nginx:1.14 这篇文章主要是记录配置 https 的步骤,就不介绍申请ca证书的相关细节了 这里有免费的 ssl 证书:https://cloud.tencent.com/act/p
本文向大家介绍keepalived+nginx高可用实现方法示例,包括了keepalived+nginx高可用实现方法示例的使用技巧和注意事项,需要的朋友参考一下 1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能。keepalived除了能够管理LVS软件外,还能支持其他服务
本文向大家介绍nginx 如何实现读写限流的方法,包括了nginx 如何实现读写限流的方法的使用技巧和注意事项,需要的朋友参考一下 nginx 读写限流 前段时间,开发了一个供外部调用的api,领导说要限流,请求单个IP,每秒50读次,写10次 万能的nginx,几行配置搞定 nginx -s reload 还是那句话,应用程序不需要关心,一句代码都不用动 感谢阅读,希望能帮助到大家,谢谢大家对本
在VB.Net中嵌套If-Then-Else语句总是合法的,这意味着你可以在另一个If ElseIf语句中使用一个If或ElseIf语句。 语法 (Syntax) 嵌套If语句的语法如下 - If( boolean_expression 1)Then 'Executes when the boolean expression 1 is true If(boolean_expressi
本文向大家介绍Docker+keepalived+nginx实现主从热备的方法示例,包括了Docker+keepalived+nginx实现主从热备的方法示例的使用技巧和注意事项,需要的朋友参考一下 前言 为解决单点故障,我们需要配置主从热备方案,服务器数量有限,故使用Docker模拟安装配置。 本次配置默认已经安装了Docker。 配置环境:centos7 64位 docker版本:Docker
在Objective-C编程中nest if-else语句总是合法的,这意味着你可以在另一个if或else if语句中使用if或else if语句。 语法 (Syntax) nested if语句的语法如下 - if( boolean_expression 1) { /* Executes when the boolean expression 1 is true */ if(bool