热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ngixn运维之七if、set、return

Ngixn运维之七if、set、returnsetreturnif正则表达式匹配:文件及目录匹配判断:AND,OR多重判断setSynta

Ngixn运维之七 if、set、return

  • set
  • return
  • if
    • 正则表达式匹配:
    • 文件及目录匹配判断:
    • AND,OR多重判断


set

Syntax: set $variable value;
Default: —
Context: server, location, if

set可以为变量设置值,值可以为字符串/变量以及它们的组合。

例如:

set $s1 1;
set $s2 "${s1}1"

return

Syntax: return code [text]; return code URL; return URL;
Default: —
Context: server, location, if

停止处理并且返回响应码给客户端,非标准代码444会在不发送响应头的情况下关闭连接。

从 0.8.42版本开始, 支持为状态码(for codes 301, 302, 303, 307, and 308)跳转URL为其他的状态码返回返回体数据。返回体或者跳转的URL支持包含变量。特殊情况,重定向URL可以指定为该服务器的本地URI,在这种情况下,完整的跳转URL依据请求 scheme ($scheme) 和the server_name_in_redirect and port_in_redirect 指令。

例如:
请求重定向到一个新域名

location = /test {return 301 $scheme://www.example.com$request_uri;}

请求直接返回数据

location ^~ /getIP {default_type text/html;return 200 '[$remote_addr]';}

if

Syntax: if (condition) { … }
Default: —
Context: server, location

对特定的条件进行判断,如果为true,括号内将会被执行。

正则表达式匹配:


  • =:等值比较;
  • ~:区分大小写的正则表达式模式匹配
  • ~*:不区分大小写的正则表达式模式匹配
  • !~:区分大小写的正则表达式模式不匹配
  • !~*:不区分大小写的正则表达式模式不匹配

文件及目录匹配判断:


  • -f, !-f:判断指定的路径是否为存在且为文件;
  • -d, !-d:判断指定的路径是否为存在且为目录;
  • -e, !-e:判断指定的路径是否存在,文件或目录均可;
  • -x, !-x:判断指定路径的文件是否存在且可执行;

例如:

if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /msie/$1 break;
}if ($http_COOKIE ~* "id=([^;]+)(?:;|$)") {set $id $1;
}if ($request_method = POST) {return 405;
}if ($slow) {limit_rate 10k;
}if ($invalid_referer) {return 403;
}

AND,OR多重判断

nginx的配置中不支持if条件的&& ||运算 ,并且不支持if的嵌套语法,但是我们可以用变量的方式来实现:

具体方法为AND 就用变量叠加,OR就用0或1切换。

例如我们的目标(伪代码):

if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {return 403;
}

我们可以这么做

set $flag 0;
if ($remote_addr ~ "^(12.34|56.78)") {set $flag "${flag}1";
}
if ($http_user_agent ~* "spider") {set $flag "${flag}2";
}
if ($flag = "012") {return 403;
}


推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Keepalived 提供了多种强大且灵活的后端健康检查机制,包括 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK 和 MISC_CHECK 等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 本指南详细介绍了如何利用华为云对象存储服务构建视频点播(VoD)平台。通过结合开源技术如Ceph、WordPress、PHP和Nginx,用户可以高效地实现数据存储、内容管理和网站搭建。主要内容涵盖华为云对象存储系统的配置步骤、性能优化及安全设置,为开发者提供全面的技术支持。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 本文深入解析了Django框架中的MVT(Model-View-Template)设计模式,详细阐述了其工作原理和应用流程。通过分析URL模式、视图、模型和模板等关键组件,读者将全面理解Django应用程序的架构体系,掌握如何高效地构建和管理Web应用。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 在腾讯云服务器上部署Nginx的详细指南中,首先需要确保安装必要的依赖包。如果这些依赖包已安装,可直接跳过此步骤。具体命令包括 `yum -y install gcc gcc-c++ wget net-tools pcre-devel zlib-devel`。接下来,本文将详细介绍如何下载、编译和配置Nginx,以确保其在腾讯云服务器上顺利运行。此外,还将提供一些优化建议,帮助用户提升Nginx的性能和安全性。 ... [详细]
author-avatar
黄秋华1219
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有