• Nginx配置语法


    在使用Nginx 的时候,主要是对Nginx Http Rewrite 模块进行配置,很多文档都没有写具体的语法,使用起来不能达到灵活的目的,所以整理了一下,官方文档的帮助文档:

    此模块使得使用正则表达式来改变UR具备使用正则表达式来改变URI的功能,可根据变量来进行转向和选择配置。

    如果相关的指令是在server级别中给出,则将在location之前先执行。如果在location模块有更进一步的重写规则,它们依然会被执行。如果URI的重写是由于location里的指令执行造成的,那么重写后的URI将会作为一个新的URI,location模块会再次进行一次匹配。

    这种循环匹配的次数不能大于10次,否则nginx返回500错误

    常用指令:

    break

    语法:break

    默认值:无

    作用域:server, location , if

    终止当前的规则匹配,不再执行任何的重写命令。

    语法:if ( condition ) { ... }

    默认值:无

    作用域:server, location

    检查condition的真假值。如果condition为真,则大括号里的命令将会被执行,并且请求会依照模块内的配置被处理。在if模块内的配置会继承前面的配置。理解起来就是如果上一作用域有一个root,那么接下来的if模块也会继承root这个配置。

    以下可用于condition中:

    * 变量名称;若变量值为空"",或字符串值以"0"开始,皆判定为false

    * 可使用 = 和 != 操作符比较变量值

    * 可使用 ~ 和 ~* 来匹配正则表达式

    * ~ 区分大小写

    * ~* 不区分大小写

    * !~ 和 !~* 与 ~ 和 ~* 是相反的意思,即为若不匹配正则表达式,结果为真

    * 检查一个文件是否存在,使用 -f 和 !-f

    * 检查一个目录是否存在,使用 -d 和 !-d

    * 检查一个文件/目录/链接是否存在,使用 -e 和 !-e

    * 检查文件是否可执行文件,使用 -x 和 !-x

    正则表达式中的部分可用一对圆括号括起来,依次按照 $1 至 $9 的变量名进行引用。

    return

    语法:return

    默认值:无

    作用域:server, location, if

    该指令结束命令执行,并向客户端返回一个状态码。状态码可使用以下值:204, 400, 402-406, 408, 410, 411, 413, 416和500-504。另外,也可发送非标准的状态码444,从而在不发送任何头信息的情况下结束连接。

    rewrite

    语法:rewrite regex replacement flag

    默认值:无

    作用域:server, location, if

    该指令依据正则表达(regex)和替换处的字符串值(replacement)来重写URI。指令的执行次序按照在配置文件中出现的顺序。

    请注意,regex只匹配相对路径,而不是整个的URL。如果想要匹配主机名,请参考下面的if表达式:

    if ($host ~* www\.(.*)) {

      set $host_without_www $1;

      rewrite ^(.*)$ http://host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'

    标志位(flag)具有结束命令执行的功能。

    标志位(flag)可使用以下值:

    * last 结束rewrite指令的执行,之后查找响应的URI和location

    * break 结束rewrite指令的执行

    * redirect 以状态码302进行临时重定向;可在替换的串值以 http:// 开头时使用它

    * permanent 以状态码301进行永久重定向

    如果重定向是相对的(即没有host主机名部分),当重定向时,nginx使用匹配的server_name作为主机名,如果未匹配到相应的头部或头部信息丢失则使用第一个 server_name 设置的值。如果没有设置 server_name, 那么就使用本地域名。如果你想要设置nginx成总是使用"Host"头部,那么请使用带有通配符 * 的 server_name 设置。

    语法:set variable value

    默认值:无

    作用域:server, location, if

    给变量(variable)赋值(value)。对于value的取值,可以使用文本、变量或它们的组合。

    uninitialized_variable_warn

    语法:uninitialized_variable_warn on\off

    默认值:uninitialized_variable_warn on

    作用域:http, server, location, if

    打开或关闭对于未初始化变量的警告的日志记录。

    来源:http://www.huomo.cn/sysapp/article-adfb.html

  • 相关阅读:
    SSM实现mysql数据库账号密码加密连接
    获取系统相关信息 (CPU使用率 内存使用率 系统磁盘大小)
    JavaWeb(一) / /* /**的区别
    IDEA(一) 使用IDEA搭建SSM框架项目
    Mysql连接数据库异常汇总【必收藏】
    Java代理模式及动态代理详解
    SpringBoot集成Thymeleaf
    设计师,程序员,当心字体侵权
    Java开发神器Lombok使用详解
    日期格式化跨年bug,是否与你不期而遇?
  • 原文地址:https://www.cnblogs.com/walkerwang/p/2059422.html
Copyright © 2020-2023  润新知