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 文件路径
port 80 IP 协议监听的端口
bind address:port 指定 IP 及端口
ipv6only on 只接收 IPv6 连接或接收 IPv6 和 IPv4 连接
default_server -- 当 http 指令域中包含多个虚拟主机时,该参数用于指定哪个虚拟主机是默认服务,默认将第一个顺序的 server 设为默认服务。默认服务可以用来处理没有 server_name 匹配成功的请求
http2 -- HTTP/2 协议支持
spdy -- SDPY 协议支持,与 HTTP/2 协议不能同时存在
ssl -- SSL 支持
proxy_protocol -- 在指定监听端口上启用 proxy_protocol 协议支持
fastopen number HTTP 处于保持连接(keepalive)状态时,允许不经过三次握手的 TCP 连接的队列的最大数
deferred -- 添加该参数后,在 TCP 三次握手的过程中,检测到客户端有数据时才将 TCP 状态置为 ESTABLISHED 状态,没有数据则直接丢弃
reuseport -- 默认情况下,所有的工作进程会共享一个 socket 去监听同一 IP 和端口的组合。该参数启用后,允许每个工作进程有独立的 socket 去监听同一 IP 和端口的组合,内核会对传人的连接进行负载均衡。适用于 Linux 3.9+,DragonFly BSD 和 FreeBSD 12+
so_keepalive off 配置是否在监听的端口启用"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 字节,在发送数据较大的场景中可以适当调整
setfib number 为监听套接字设置关联路由表,仅在 FreeBSD 系统上有效
accept_filter filter 为监听套接字设置过滤器,仅支持 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指令域的主机名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值