时间:2021-02-04日 来源: 作者: 
	在上一篇文章:《》中, 我们介绍过了使用if来进行截断字符串的用法, 这次我们来了解下if的逻辑用法:
	什么是逻辑用法呢, 就程序中的and、or关系, 就叫做逻辑了.
NGINX支持if的 and 与 or 或者 && 与 || 吗?
	答案是No.
	当你尝试这样配置, 重载nginx时, nginx会报出错误
	代码如下:
	
 
 
		
		    location = /test/ {
		        default_type text/html;
		        set $b 0;
		        if ( $remote_addr != '' && $http_x_forwarded_for != '' ){
		            set $b '1';
		        }
		        echo $b;
		    }
		[root@test-vm ~]# /usr/local/nginx/sbin/nginx -t
		nginx: [emerg] invalid condition "$remote_addr" in /usr/local/nginx/conf/nginx.conf:60
		configuration file /usr/local/nginx/conf/nginx.conf test failed
	
	那么我们应该怎样来实现and 和or的逻辑关系呢?
	代码如下:
	
location = /test_and/ {
default_type text/html;
set $a 0;
set $b 0;
if ( $remote_addr != '' ){
set $a 1;
}
if ( $http_x_forwarded_for != '' ){
set $a 1$a;
}
if ( $a = 11 ){
set $b 1;
}
echo $b;
}
location = /test_or/ {
default_type text/html;
set $a 0;
set $b 0;
if ( $remote_addr != '' ){
set $a 1;
}
if ( $http_x_forwarded_for != '' ){
set $a 1;
}
if ( $a = 1 ){
set $b 1;
}
echo $b;
}
location = /test_and/ {
default_type text/html;
set $a 0;
set $b 0;
if ( $remote_addr != '' ){
set $a 1;
}
if ( $http_x_forwarded_for != '' ){
set $a 1$a;
}
if ( $a = 11 ){
set $b 1;
}
echo $b;
}
location = /test_or/ {
default_type text/html;
set $a 0;
set $b 0;
if ( $remote_addr != '' ){
set $a 1;
}
if ( $http_x_forwarded_for != '' ){
set $a 1;
}
if ( $a = 1 ){
set $b 1;
}
echo $b;
}
相关文章
推荐文章
热门文章
