nginx if判断&&和||用法详解

今天在写nginx配置的时候需要用到if判断的&&,但是查了一下文档if并不支持&&的写法,现在报方法记录一下
 
①nginx if判断&&(并且)写法

 set $allowphp '';
if ($request_method ~ ^(POST)$) {
     set $allowphp p;
}
if ( $request_filename !~ \.php$) {
    set $allowphp "${allowphp}c";
}
if ( $allowphp = pc) {
    set $allowss false;
}

PS:上面代码的意思是 post 提交并且是php文件的把变量$allowss设置成false
 
②nginx if判断||(或)写法
 set $allowss true;
if ($http_x_forwarded_for ~ " ?222\.186\.34\.41$") {
   set $allowss false;
}
if ($http_x_forwarded_for ~ " ?180\.97\.106\.37$") {
   set $allowss false;
}

PS:ip地址222.186.34.41或180.97.106.37的把变量$allowss设置成false.上面的代码我主要用来禁用ip用的,因为我用了cdn所以ip判断用的$http_x_forwarded_for
 
③结合上面两段代码,实现禁止ip访问,禁止用post访问非php的文件

 set $allowss true;
set $allowphp '';
if ($request_method ~ ^(POST)$) {
     set $allowphp p;
}
if ( $request_filename !~ \.php$) {
    set $allowphp "${allowphp}c";
}
if ( $allowphp = pc) {
    set $allowss false;
}

if ($http_x_forwarded_for ~ " ?222\.186\.34\.41$") {
   set $allowss false;
}
if ($http_x_forwarded_for ~ " ?180\.97\.106\.37$") {
   set $allowss false;
}

if ($allowss = false) {
return 403;
}

时间: 2024-10-09 17:20:31

nginx if判断&&和||用法详解的相关文章

js判断是否为空和typeof的用法(详解)_javascript技巧

(1)typeof用法 typeof的运算数未定义,返回的就是 "undefined". 运算数为数字 typeof(x) = "number" 字符串 typeof(x) = "string" 布尔值 typeof(x) = "boolean" 对象,数组和null typeof(x) = "object" 函数 typeof(x) = "function" (2)js判断是否为空 v

《Ansible权威指南》一2.4 Ansible系列命令用法详解与使用场景介绍

2.4 Ansible系列命令用法详解与使用场景介绍 如何获取Ansible的系列命令呢?在终端键入ansible后连续按两次Tab键,会补全所有以ansible字母开头的命令,这些命令均是Ansible系列命令.本节我们来逐一介绍Ansible的系列命令使用. ansible ansible-galaxy ansible-pull ansible-doc ansible-playbook ansible-vault ansible-console 2.4.1 ansible 命令ansible

JQuery中DOM事件绑定用法详解_jquery

本文实例讲述了JQuery中DOM事件绑定用法.分享给大家供大家参考.具体分析如下: 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.m

PostgreSQL 触发器 用法详解 1

标签 PostgreSQL , trigger , 触发器 , 用法详解 背景 触发器在数据库中的应用非常广泛,例如在发生insert, update, delete, truncate时触发,调用事先写好的触发器函数. 触发器函数可以使用plpgsql , c , python , perl , java等语言编写. 触发器函数中支持很多内置的变量,可以干很多事情. 本文将以PostgreSQL 9.2为例, 介绍触发器的使用. 分两部分. 第二部分链接 : 内容简介 一. 1. 什么是触发器

谈谈jQuery Ajax用法详解_jquery

定义和用法 ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性. 最简单的情况下,$.ajax() 可以不带任何参数直接使用. 注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置. jQuery Ajax在web应用开发中很常用

jQuery表格插件datatables用法详解_jquery

一.Datatables简介DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格.主要特点: 自动分页处理 即时表格数据过滤 数据排序以及数据类型自动检测 自动处理列宽度 可通过CSS定制样式 支持隐藏列 易用 可扩展性和灵活性 国际化 动态创建表格 免费的 二.如何使用在做后台的时候并没有美工和前端工程师来配合你做页面,为了显示数据并有一定的美感,我们可以使用jQuery的DataTables插件来帮助我们完

thinkPHP中session()方法用法详解_php实例

本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 session(name,name,value='') 参数 name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值.获取或者操作. Value(可选):要设置的session值,如果传入null表示删除sess

C++ Vector用法详解_C 语言

vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说:vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. 使用vector容器之前必须加上<vector>头文件:#include<vector>; vector属于std命名域的内容,因此需要通过命名限定:using std::vector;也可以直接使用全局的命名空间方式:using nam

Android中使用HTTP服务的用法详解_Android

在Android中,除了使用Java.NET包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache HttpClient是一个完善的HTTP客户端,它提供了对HTTP协议的全面支持,可以使用HTTP GET和POST进行访问.下面我们就结合实例,介绍一下HttpClient的使用方法. 我们新建一个http项目,项目结构如图: 在这个项目中,我们不需要任何的Activity,所有的操作都在单元测试类H