Nginx之核心配置指令2

1.HTTP核心配置指令

        Nginx最核心的功能就是处理HTTP请求,HTTP核心 配置指令用于进行Nginx处理HTTP请求时的相关处理方 法的配置。HTTP请求处理的简单闭环流程模型是当客 户端发起HTTP请求后,服务端会解析HTTP请求头,并 根据HTTP请求头中访问的URI与本地路径文件进行匹 配,进行读数据或写数据的操作,然后返回处理结果 并断开HTTP连接。Nginx对HTTP请求进行内部处理的过 程要比上述过程更加复杂,但HTTP请求处理的闭环流 程是一致的。

        按照HTTP请求处理闭环流程模型,结合HTTP核心 配置指令的功能,可以将Nginx的HTTP核心配置指令进 行如下分类:

        ·初始化服务、HTTP请求解析、访问路由location、访问重写rewrite、访问控制、数据处理、·关闭连接、日志记录。

       1.1 初始化服务

                主要介绍与HTTP虚拟主机服务的建立、端口 监听及监听方式等服务初始化有关的配置指令

        1.1.1 端口监听指令

名称端口监听指令
指令listen
作用域server
默认值listen *:80或*:8000
指令说明服务监听端口、绑定IP、监听方式的配置

         Nginx服务通过listen指令的指令值监听网络请 求,可以是IP协议的形式,也可以是UNIX域套接字。如果不设置listen指令,Nginx在以超级用户运行时则 监听80端口,以非超级用户运行时则监听8000端口。

        1.1.2 listen指令的指令值

参数默认值 参数说明
address--若为 IP 协议,该参数值为指定绑定监听端口的 IP 或主机名;若为 UNIX 域套接字,则该参数值为 sock 文件路径
port80IP 协议监听的端口
bindaddress:port指定 IP 及端口
ipv6onlyon只接收 IPv6 连接或接收 IPv6 和 IPv4 连接
default_server--当 http 指令域中包含多个虚拟主机时,该参数用于指定哪个虚拟主机是默认服务,默认将第一个顺序的 server 设为默认服务。默认服务可以用来处理没有 server_name 匹配成功的请求
http2--HTTP/2 协议支持
spdy--SDPY 协议支持,与 HTTP/2 协议不能同时存在
ssl--SSL 支持
proxy_protocol--在指定监听端口上启用 proxy_protocol 协议支持
fastopennumberHTTP 处于保持连接(keepalive)状态时,允许不经过三次握手的 TCP 连接的队列的最大数
deferred--添加该参数后,在 TCP 三次握手的过程中,检测到客户端有数据时才将 TCP 状态置为 ESTABLISHED 状态,没有数据则直接丢弃
reuseport--默认情况下,所有的工作进程会共享一个 socket 去监听同一 IP 和端口的组合。该参数启用后,允许每个工作进程有独立的 socket 去监听同一 IP 和端口的组合,内核会对传人的连接进行负载均衡。适用于 Linux 3.9+,DragonFly BSD 和 FreeBSD 12+
so_keepaliveoff配置是否在监听的端口启用"TCP keepalive"机制。当设置为 on 时,默认等同于 so_keepalive=30m::10,表示 30 分钟无数据传输时发送探测包,发送 10 次,发送间隔使用系统内核参数 tcp_keepalive_intvl 的设定值
backlog-1/511当阻塞时,设置挂起连接队列的最大长度,在 FreeBSD,DragonFly BSD 和 MacOS 操作系统上,默认值为 -1,其他平台上值为 511
rcvbuf--socket 接收缓冲的大小,默认为 8k 字节,在接收数据比较大的场景中可以适当调整
sndbuf--socket 发送缓冲的大小,默认为 8k 字节,在发送数据较大的场景中可以适当调整
setfibnumber为监听套接字设置关联路由表,仅在 FreeBSD 系统上有效
accept_filterfilter为监听套接字设置过滤器,仅支持 FreeBSD 和 NetBSD 5.0+ 系统
http {
    server {
        listen 127.0.0.1:8000;           # 监听127.0.0.1的8000端口
        listen 127.0.0.1;                    # 监听127.0.0.1的默认80端口(root权限)
        listen 8000;                          # 监听本机所有IP的8000端口
        listen *:8000;                        # 监听本机所有IP的8000端口
        listen localhost:8000;           # 监听locahost的8000端口
        listen [::]:8000;                      # 监听IPv6的8000端口
        listen [::1];                             # 监听IPv6的回环IP的默认80端口(root权限)
        listen unix:/var/run/nginx.sock; # 监听域套接字文件

        listen *:8000 \                     # 监听本机的8000端口
                default_server \          # 当前服务是http指令域的主服务
                fastopen=30 \            # 开启fastopen功能并限定最大队列数为30
                deferred \                   # 拒绝空数据连接
                reuseport \                 # 工作进程共享socket这个监听端口
                backlog=1024 \          # 请求阻塞时挂起队列数是1024个
                so_keepalive=on;        # 当socket为保持连接时,开启状态检测功能

    }
}

         1.1.3 关闭保持连接指令

名称关闭保持连接指令
指令keepalive_disable
作用域http、server、location
默认值

msie6

指令说明对指定的浏览器关闭保持连接机制,如果指令为none,则对所有浏览器开启保持连接机制
#配置样例如下:
http {
    keepalive_disable none;
}

         保持连接机制可以使同一客户端的多个HTTP请求 复用TCP连接,减少TCP握手次数和并发连接数,从而 降低服务器资源消耗。

        1.1.4 保持连接复用请求数指令

名称关闭保持连接指令
指令keepalive_requests
作用域http、server、location
默认值

100

指令说明同一TCP连接可复用的最大HTTP请求数,超过该数值后,TCP连接将被关闭
#配置样例如下:
http {
    keepalive_requests 1000;
}

         1.1.5 保持连接超时指令

名称保持连接超时指令
指令keepalive_timeout
作用域http、server、location
默认值

75s

指令说明

TCP连接内持续没有数据传输的最大时间,超过这个时间则关闭连接,默认是75s

#配置样例如下:
http {
    keepalive_timeout 75s;
}

         keepalive_timeout的设定需要根据具体的场景来 考虑,最重要的是要理解保持连接的工作方式与场景 需求的匹配情况。

        1.1.6 保持连接时最快发数据指令

名称保持连接时最快发数据指令
指令tcp_nodelay
作用域http、server、location
默认值

on

指令说明

当HTTP处于保持连接状态、SSL、无缓冲代理、WebSocket代理时,默认开启该指令。该指令允许小数据包发送,适用于延时敏感、小包数据的场景,该指令关闭时,数据包在缓存中达到一定量值时才会发送

#配置样例如下:
http {
    tcp_nodelay off;
}

         1.1.7 域名解析服务器指令

名称域名解析服务器指令
指令resolver
作用域http、server、location
默认值

-

指令说明

用于指定域名解析服务器地址,域名解析服务器可以将upstream主机组中的主机域名解析为IP地址。nginx会缓存解析结果,默认缓存时间是解析响应中的TTL值,可以通过valid参数进行调整

#配置样例如下:
http {
    resolver 127.0.0.1 [::1]:5353 valid=30s;
}

         指令值参数valid:用于设置缓存解析结果的时间

        指令值参数ipv6:默认配置下,Nginx将在解析 域名的同时查找IPv4和IPv6地址。设置参数 ipv6=off,可以关闭IPv6地址的查找

        指令值参数status_zone:设置收集指定区域请 求和响应的DNS服务器统计信息,仅商业版本有效

        1.1.8 域名解析超时指令

名称域名解析超时指令
指令resolver_timeout
作用域http、server、location
默认值

30s

指令说明

设置进行域名解析超时时间

#配置样例如下:
http {
    resolver_timeout 5s;
}

         1.1.9 主机名指令

名称主机名指令
指令server_name
作用域server
默认值

-

指令说明

设置所在server指令域的主机名

#配置样例如下:
http {
    server {
        server_name example.com .example.com; #泛域名的使用
        server_name www.example.;# 多个后缀域名的使用server_name
        www.example.com ~^www.example.com$;# 正则表达式匹配
        # 正则匹配变量的场景
        server_name ~^(www\.)?(.+)$;
        location / {
            root /sites/$2;
        }
        # 正则匹配为变量的场景
        server_name ~^(www\.)?(?<domain>.+)$;
        location / {
            root /sites/$domain;
        }
    }
}

                 当server_name指令值中有多个主机名时,第一个 主机名为首主机名

        1.1.10 主机名哈希表最大值指令

名称主机名哈希表最大值指令
指令server_names_hash_max_size
作用域http、server、location
默认值

512

指令说明

主机名哈希表的最大存储大小默认为512个字节,当域名较多时,可以用该指令增加存储大小

#配置样例如下:
http {
    server_names_hash_max_size 1024;
}

         1.1.11 主机名哈希桶最大值指令

名称主机名哈希桶最大值指令
指令server_names_hash_bucket_size
作用域http、server、location
默认值

-

指令说明

主机名哈希桶的默认值与CPU缓存行的大小一致,有32、64、128字节的3个值,该值也适用于增加主机名的存储空间

#配置样例如下:
http {
    server_names_hash_bucket_size 128;
}

         1.1.12 变量哈希表最大值指令

名称变量哈希表最大值指令
指令variables_hash_max_size
作用域http
默认值

512

指令说明

nginx变量哈希表的最大存储大小

#配置样例如下:
http {
    variables_hash_max_size 1024;
}

         1.1.13 变量哈希桶最大值指令

名称变量哈希桶最大值指令
指令variables_hash_bucket_size
作用域http
默认值

64

指令说明

nginx变量哈希桶的最大存储大小

#配置样例如下:
http {
    variables_hash_bucket_size 128;
}

         1.2 HTTP请求处理

        标准的HTTP请求从开始到结束包括请求报文和响 应报文。 请求报文是客户端向服务端发起请求时告知服务 端请求的方式、相关属性和请求内容的数据包,由请 求行、请求头、请求体组成。

       HTTP响应状态码是响应报文中对HTTP请求处理结 果的重要标识,响应状态码是由RFC 2616规范定义 的,并由互联网号码分配局(Internet Assigned Numbers Authority)维护,状态码可以分为以下5个 类别。 ·

                1××(消息):表示服务端已经接收到请求, 正在进行处理

                2××(处理成功):表示服务端已经正确处理 完客户端的HTTP请求

                3××(重定向):服务端接收到HTTP请求,并 将其HTTP请求重定向到客户本地或其他服务器进行处 理

                4××(客户端请求有误):客户端提交的请求 不符合规范或未被授权、禁止访问等

                5××(服务端处理出错):服务端无法正常完 成请求操作,如超时等

        当Nginx接收HTTP请求后,处理相关的配置指令如下表

        1.2.1 忽略请求头无效属性指令

名称忽略请求头无效属性指令
指令ignore_invalid_headers
作用域http、server
默认值

on

指令值选项on或off
指令说明

忽略请求头中的无效属性字段,请求头属性字段中,属性名称默认为英文字符、数字和连接符组成,不符合此标准的属性名均为无效属性名。当指令值为on时,不对无效的属性名称进行过滤

#配置样例如下:
http {
    ignore_invalid_headers off;
}

         1.2.2 请求头中下划线连接属性名指令

名称请求头中下划线连接属性名指令
指令underscores_in_headers
作用域http、server
默认值

off

指令值选项on或off
指令说明

请求头中属性名称的定义中"_"是无效连接符,启用该指令后,"_"将被认为是有效的连接符。如果该指令值为off,则按照ignore_invalid_headers指令的配置进行处理

#配置样例如下:
http {
    underscores_in_headers on;
}

         1.2.3 请求头缓冲区大小指令

名称请求头缓冲区大小指令
指令client_header_buffer_size
作用域http、server
默认值

1k

指令说明

设置存放读取客户端请求头的缓冲区的大小,默认值为1K,当请求头的数据因cookie过长等其他原因超过所设定的大小时,会按照large_client_header_buffers的指令配置进行处理

#配置样例如下:
http {
    client_header_buffer_size 2k;
}

         1.2.4 超大请求头缓冲区大小指令

名称超大请求头缓冲区大小指令
指令large_client_header_buffers
作用域http、server
默认值

4 8k

指令说明

当客户请求头的大小超过client_header_buffer_size指令设置的值时,会将超出的部分转移到该缓冲区中。在默认配置下,超大请求头第一次可以分配到一个8KB的缓冲区块,请求行的大小不能超过该缓冲区的大小,否则将返回414错误。超出8KB的请求头会被循环转移到新的缓冲区块中,最多转移4次,当超过该值时,则会返回400错误

#配置样例如下:
http {
    large_client_header_buffers 10 8k;
}

        1.2.5 请求头超时指令 

名称请求头超时指令
指令client_header_timeout
作用域http、server
默认值

60s

指令说明

读取客户端请求头的最大超时时间

#配置样例如下:
http {
    client_header_timeout 180s;
}

         1.2.6 请求头内存池大小指令

名称请求头内存池大小指令
指令request_pool_size
作用域http、server
默认值

4k

指令说明

nginx开始处理请求时,会为每个请求分配一个4KB大小的内存池,以减少内核对小块内存的分配次数。HTTP请求结束后会回收为其分配的内存池

#配置样例如下:
http {
    request_pool_size 4k;
}

         官方文档中提到,请求头内存池大小指令对性能 的提升作用很小,不建议调整。

        1.2.7 请求体大小指令

名称请求体大小指令
指令client_max_body_size
作用域http、server、location
默认值

1m

指令说明

HTTP请求时,请求体的最大值。当请求头中属性Content-Length的大小超过指令配置时,返回状态码408

#配置样例如下:
http {
    client_max_body_size 100m;
}

        当指令值为0时,表示没有限制。

        1.2.8 请求体缓冲区大小指令 

名称请求体缓冲区大小指令 
指令client_body_buffer_size
作用域http、server、location
默认值

-

指令说明

设置读取客户端请求体的缓冲区大小,当请求体的大小超过该设定值后,会按照client_body_in_single_buffer指令的配置选择部分或全部写入client_body_temp_path指令设定的文件中。默认配置下,32位系统下的缓冲区大小时8KB,64位系统下的缓冲区大小为16KB

#配置样例如下:
http {
    request_pool_size 4k;
}

         1.2.9 请求体写入缓冲区指令

名称请求体写入缓冲区指令
指令client_body_in_single_buffer
作用域http、server、location
默认值

off

指令说明

将完整的请求体存储在单个缓冲区中。当缓冲区大小不足时,会完整的写入client_body_temp_path指令设定的文件中。推荐在使用变量$request_body时启用该指令

#配置样例如下:
http {
    request_pool_size 4k;
}

        1.2.10 请求体写入文件指令 

名称请求体写入文件指令 
指令client_body_in_file_only
作用域http、server、location
默认值

off

指令值选项off或clean或on
指令说明

默认情况下是优先使用缓存,在请求体超出请求体缓冲区的大小时在写入文件。启用该指令后将禁用缓冲区,请求体会被直接写入client_body_temp_path指令设定的文件中。

#配置样例如下:
http {
    client_body_in_file_only on;
}

        指令值为on时,HTTP请求结束后临时文件会被保 留。指令值为clean时,HTTP请求结束后临时文件会被 删除 

        1.2.11 请求体临时文件目录指令

名称请求体临时文件目录指令
指令client_body_temp_path
作用域http、server、location
默认值

client_body_temp_path client_body_temp

指令说明

请求体别写入文件的临时目录

#配置样例如下:
http {
    client_body_temp_path /tmp/nginx/client_temp 1 2;
}

         默认值是在编译时由configure的配置参数-- http-proxy-temp-path决定的,没有参数指定时为 Nginx安装目录的client_body_temp文件夹。

        1.2.12 请求体超时指令

名称请求体临时文件目录指令
指令client_body_timeout
作用域http、server、location
默认值

60s

指令说明

当HTTP请求建立连接后,客户端在超过设定时间后仍未发送请求体内容到服务器,则nginx认为请求体超时,将返回响应状态码408

#配置样例如下:
http {
    client_body_timeout 120s;
}

        1.2.13 文件修改判断指令

名称文件修改判断指令
指令if_modified_since
作用域http、server、location
默认值

exact

指令值选项off或exact或before
指令说明

在请求头中存在属性if_modified_since时,关闭或设置客户端缓存文件修改时间额服务端校验功能

#配置样例如下:
http {
    if_modified_since before;
}

        当指令值为off时,忽略请求头中 if_modified_since属性的处理,关闭Nginx的服务端 校验功能;当指令值为exact时,与被请求文件的修改 时间做精确匹配,即完全相等则认为客户端缓存有 效,返回响应状态码304;当指令值为before时,被请 求文件的修改时间小于if_modified_since属性字段中 设定的时间,认为客户端缓存有效,返回响应状态码 304。 

        1.2.14 实体标签指令

名称实体标签指令
指令etag
作用域http、server、location
默认值

on

指令值选项on或off
指令说明etag(Entity Tag),用于在响应头中返回文件实体标签,与同一文件的下一次请求头中If-None-Match属性值组合检查文件是否被修改,未修改则返回响应状态码304,否则返回最新的文件内容
#配置样例如下:
http {
    etag off;
}

        1.2.15 范围请求的最大值指令

名称范围请求的最大值指令
指令max_ranges
作用域http、server、location
默认值

-

指令说明默认为不限制大小,当客户端以byte_range方式获取数据请求时,该指令限定了允许的最大值。当指令值为0时,则关闭以byte_range方式获取数据的功能
#配置样例如下:
http {
    max_ranges 1024 ;
}

        可在断点续传等场景中使用范围请求的最大值指 令。 

        1.2.16 文件类型指令集

名称文件类型指令集
指令types
作用域http、server、location
默认值

-

指令说明被请求文件扩展名与MIME类型映射表
#配置样例如下:
http {
    application/octet-stream yaml;
}

        将匹配路径的所有文件指定为MIME类型,配置样 例如下: 

#配置样例如下:
location /download/ {
    types { }
    default_type application/octet-stream;
}

        1.2.17 文件类型哈希表大小指令

名称文件类型哈希表大小指令
指令types_hash_max_size
作用域http、server、location
默认值

1024

指令说明设定MIME类型哈希表的大小
#配置样例如下:
http {
    types_hash_max_size 2048;
}

        1.2.18 文件类型哈希桶大小指令

名称文件类型哈希桶大小指令
指令types_hash_bucket_size
作用域http、server、location
默认值

-

指令说明设定MIME类型哈希桶的大小,默认值与CPU缓存行的大小一致,有32、64、128字节三个值
#配置样例如下:
http {
    types_hash_bucket_size 64;
}

        1.2.19 错误跳转指令

名称错误跳转指令
指令error_page
作用域http、server、location
默认值

-

指令说明当HTTP请求发生错误时,可以根据响应状态码定义一个返回的页面或者执行跳转
#配置样例如下:
http {
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
}

        可设定为一个location内部访问

#配置样例如下:
http {
    error_page 404 = @fallback;
    location @fallback {
        proxy_pass http://backend;
    }
}

        响应状态码可通过“=response”语法进行修改

#配置样例如下:
http {
    error_page 404 =200 /empty.gif;
}

        1.2.20 多级错误跳转指令

名称多级错误跳转指令
指令recursive_error_pages
作用域http、server、location
默认值

off

指令值选项off或on
指令说明当使用error_page设定多层内部访问时,仍可处理上一层级返回的响应状态码
#配置样例如下:
http {
    proxy_intercept_errors on; # 当上游服务器返回非200状态码时,返回代理服务器处理
    recursive_error_pages on; # 启用多级错误跳转功能
    location / {
        error_page 404 = @fallback; # 当前URL请求为404时执行内部请求@fallback
    }
    location @fallback {
        proxy_pass http://backend; # 当前所有请求代理到上游服务器backend
        error_page 502 = @upfallback; # 当上游服务器返回502状态码时,执行内部请求@upfallback
    }
    location @upfallback {
        proxy_pass http://newbackend; # 当前的所有请求代理到上游服务器newbackend
    }
}

        上述配置样例中,如果recursive_error_pages指 令值为off,Nginx只会处理一次error_page 404。当 指令值为on,且upstream返回状态码为502时,才会调 用upfallback的内部访问。 

        1.2.21 响应服务版本号指令

名称响应服务版本号指令
指令server_tokens
作用域http、server、location
默认值

on

指令值选项on或off
指令说明默认在错误信息响应头中增加属性字段“Server”以标识nginx的版本号
#配置样例如下:
http {
    server_tokens off;
}

        1.2.22 msie响应注释指令

名称msie响应注释指令
指令msie_padding
作用域http、server、location
默认值

on

指令值选项on或off
指令说明在响应状态大于或等于400时,会在响应报文中添加注释,使响应报文大小达到512字节。仅使用于msie客户端
#配置样例如下:
http {
    msie_padding off;
}

        代码中显示该指令配置也支持Chrome客户端。

        1.3 访问路由location 

                URI,即统一标识资源符,通用的URI语法格式如下:

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

                        在Nginx的应用场景中,URL与URI并无明确区别。

                        scheme是URI请求时遵守的协议,常见的有 HTTP、HTTPS、FTP。

                        host[:port]是主机名与端口号,HTTP协议的默 认端口是80,HTTPS协议的默认端口是443。

                        [/path]是访问路径与访问文件名。

                        [?query]是访问参数,访问参数以“?”开始作 标识,由多个以“&”连接的key=value形式的字符串 组成。

                1.3.1 URI匹配规则

                location是Nginx对HTTP请求中的URI进行匹配处理的指令,location的语法形式如下:

location [=|~|~*|^~|@] pattern { ... }

                其中, “[=|~*|^~|@]”部分称为location修饰语 (Modifier),修饰语定义了与URI的匹配方式。 pattern为匹配项,可以是字符串或正则表达式

                无修饰语:完全匹配URI中除访问参数以外的内 容,匹配项的内容只能是字符串,不能是正则表达式。

location /images {
    root /data/web;
}

                修饰语“=” :完全匹配URI中除访问参数以外的 内容,Linux系统下会区分大小写,Windows系统下则不会

location = /images {
    root /data/web;
}

                修饰语“~” :完全匹配URI中除访问参数以外的 内容,Linux系统下会区分大小写,Windows系统下则 会无效。匹配项的内容必须是正则表达式

location ~ /images/.*\.(gif|jpg|png)$ {
    root /data/web;
}

                修饰语“~*” :完全匹配URI中除访问参数以外的 内容,不区分大小写。匹配项的内容必须是正则表达式

location ~* \.(gif|jpg|png)$ {
    root /data/web;
}

                修饰语“^~” :完全匹配URI中除访问参数以外的 内容,匹配项的内容如果不是正则表达式,则不再进 行正则表达式测试。

location ^~ /images {
    root /data/web;
}

        修饰语“@” :定义一个只能内部访问的location 区域,可以被其他内部跳转指令使用,如try_files或 error_page。

location @images {
proxy_pass http://images;
}

                 1.2.2 匹配顺序

                1)先检测匹配项的内容为非正则表达式修饰语的 location,然后再检测匹配项的内容为正则表达式修 饰语的location。

                2)匹配项的内容为正则与非正则都匹配的 location,按照匹配项的内容为正则匹配的location 执行。

                3)所有匹配项的内容均为非正则表达式的 location,按照匹配项的内容完全匹配的内容长短进 行匹配,即匹配内容多的location被执行。

                4)所有匹配项的内容均为正则表达式的 location,按照书写的先后顺序进行匹配,匹配后就 执行,不再做后续检测。

        注:当location为正则匹配且内部有proxy_pass指令 时,proxy_pass的指令值中不能包含无变量的字符 串。修饰语“^~”不受该规则限制

location ~ /images {
    proxy_pass http://127.0.0.1:8080;# 正确的指令值
    proxy_pass http://127.0.0.1:8080$request_uri; # 正确的指令值
    proxy_pass http://127.0.0.1:8080/image$request_uri; # 正确的指令值
    proxy_pass http://127.0.0.1:8080/;# 错误的指令值
}

        1.2.3 访问路由指令

                 1.2.3.1 合并空斜线指令
名称合并空斜线指令
指令

merge_slashes

作用域http、server、location
默认值

on

指令值选项on或off
指令说明当指令值为on,在访问路径中相邻斜线内容为空时进行合并
#配置样例如下:
http {
    merge_slashes off;
}
                 1.2.3.2 跳转主机名指令
名称跳转主机名指令
指令

server_name_in_redirect

作用域http、server、location
默认值

off

指令说明默认情况下,nginx重定向时,会用当前server指令域中主机的IP与path拼接成完整的URL进行重定向。开启参数后,nginx会先查看当前指令域中server_name的第一个主机名,如果没有,则会查找请求头中host字段的内容,如果再没有会用IP与path进行拼接
#配置样例如下:
http {
    server_name_in_redirect on;
}
                 1.2.3.3 跳转端口指令
名称跳转端口指令
指令

port_in_redirect

作用域http、server、location
默认值

on

指令说明nginx重定向时,会用当前server指令域的监听端口与主机拼接成完整的URL进行重定向。当指令为off时,则默认用80端口。
#配置样例如下:
http {
    port_in_redirect on;
}
                 1.2.3.4 子请求输出缓冲区大小指令
名称子请求输出缓冲区大小指令
指令subrequest_output_buffer_size
作用域http、server、location
默认值

4k或8k

指令说明设置用于存储子请求响应报文的缓冲区大小,默认值与操作系统的内存页大小一致
#配置样例如下:
http {
    subrequest_output_buffer_size 64K;
}
                 1.2.3.5 绝对跳转指令
名称绝对跳转指令
指令absolute_redirect
作用域http、server、location
默认值

on

指令值选项off或on
指令说明nginx发起的重定向使用绝对路径做跳转,即用主机名和端口及访问路径的方式,如果关闭的话,则跳转为默认相对当前请求的主机名和端口的访问路径
#配置样例如下:
http {
    absolute_redirect off;
}
                1.2.3.6 响应刷新指令 
名称响应刷新指令 
指令absolute_redirect
作用域http、server、location
默认值

on

指令值选项off或on
指令说明nginx发起的重定向使用绝对路径做跳转,即用主机名和端口及访问路径的方式,如果关闭的话,则跳转为默认相对当前请求的主机名和端口的访问路径
#配置样例如下:
http {
    msie_refresh off;
}

        1.4 访问重写rewrite

        访问重写rewrite是Nginx HTTP请求处理过程中的 一个重要功能,它是以模块的形式存在于代码中的, 其功能是对用户请求的URI进行PCRE正则重写,然后返 回30×重定向跳转或按条件执行相关配置。rewrite模 块内置了类似脚本语言的set、if、break、return配 置指令,通过这些指令,用户可以在HTTP请求处理过 程中对URI进行更灵活的操作控制。rewrite模块提供 的指令可以分两类,一类是标准配置指令,这部分指 令只是对指定的操作进行相应的操作控制;另一类是 脚本指令,这部分指令可以在HTTP指令域内以类似脚 本编程的形式进行编写。

         1.4.1 rewrite日志记录指令

名称rewrite日志记录指令
指令rewrite_log
作用域http、server、location
默认值

off

指令值选项on或off
指令说明当指令为on时,rewrite的执行结果会以notice级别记录到nginx的error日志文件中
#配置样例如下:
http {
    rewrite_log off;
}

        1.4.2  未初始化变量告警日志记录指令

名称未初始化变量告警日志记录指令
指令uninitialized_variable_warn
作用域http、server、location
默认值

off

指令值选项on或off
指令说明当指令为on时,会将未初始化的变量告警记录到日志中
#配置样例如下:
http {
    uninitialized_variable_warn off;
}

        1.4.3 rewrite指令

名称rewrite指令
指令rewrite
作用域server、location
默认值

on

指令值选项on或off
指令说明对用户的URI用正则表达式的方式进行重写,并跳转到新的URI
#配置样例如下:
http {
    rewrite ^/users/(.*)$ /show?user=$1 last;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值