Nginx使用规范

发布于:2025-06-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

1.Nginx配置

NGINX配置文件主要包括全局配置、HTTP配置、STREAM配置等内容,具体配置结构如下:

配置类型

说明

全局配置

必须存在

STREAM模块

按需配置

    UPSTREAM配置

使用STREAM时,按需配置

    SERVER配置

使用STREAM时,必须配置

HTTP模块

按需配置

    HTTP基础配置

使用HTTP模块,必须配置

    UPSTREAM配置

使用HTTP模块,按需配置

    SERVER配置

使用HTTP模块,必须配置

    LOCATION配置

使用HTTP模块,必须配置

2.全局配置参数与说明

参数

参数值

参数说明

user

nginx

配置用户或者组

work_processes

auto

允许生成的进程数

worker_cpu_affinity

auto

充分利用多核CPU、CPU是任务处理,当计算最费是或资源的时候,CPU核使用上越多越好

use

epoll

事件驱动模型

accept_mutex

off

惊群现象一个网络连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能

multi_accept

on

设置一个进程是否同时接受多个网络连接

worker_connection

10240

最大连接数

stream

按需加载(include)stream模块配置文件

http

按需加载(include)http模块配置文件

3.Stream模块配置参数与说明

​​​​​​​3.1. RESOLVER部分

当使用域名地址访问NGINX后段服务器地址时,必须添加如下如下DNS解析参数:

参数

参数值

参数说明

address

DNS地址

配置进行stream内配置域名地址解析的DNS域名信息。

valid

10s

覆盖DNS的TTL属性

ipv6

off

禁止对IPv6的解析

​​​​​​​3.2.UPSTREAM部分

参数

参数值

参数说明

upstream

stream_backend01_<PORT>

配置UPSTREAM名字

server

后端主机/IP:端口

定义后段处理请求的服务器和端口

server_weight

实现负载均衡(默认为轮询)中基于权重的策略,服务器访问地址的权重设置

least_conn

实现负载均衡(默认为轮询)中基于连接最少的策略,请求会被转发到连接数最少的服务器

least_time

实现负载均衡(默认为轮询)中基于平均响应时间最短的策略。

max_fails

2

基于连接探测。max_fails设定Nginx与服务器通信的尝试失败的次数(默认为1次),fail_timeout 设置进行失败尝试的单位周期(默认为10s)。

如果发现后端异常,对于同一个节点,在单位周期为中达到max_fails次数,那么将把此节点标识为不可以,等待下一个周期,再一次去请求,判断是连接是否成功,如果成功将恢复之前的轮询方式,如果不可用将在下一个周期再试一次。

fail_timeout

30s

​​​​​​​3.3.SERVER部分

参数

参数值

说明

listen

<PORT>

监听端口

proxy_pass

UPSTREAM名称

请求转向定义的UPSTREAM

error_log

logs/error-tcp.log warn

配置stream模块的错误日志路径和级别。

map

proxy-tcp-json

创建自定义变量,以匹配特定的规则,该参数自1.11.2开始提供。

access_log

logs/access-tcp.log  

配置stream模块的访问日志的路径,该参数自1.11.4开始提供。

proxy_connect_timeout

30s

设置与UPSTREAM中配置的后端服务器建立连接的超时时间,默认60s。

proxy_timeout

10s

设置在代理到UPSTREAM组中的服务器之一后使用的超时与后端服务器的数据交互必须在该参数定义的时间内完成)。

​​​​​​​4.http基础配置

​​​​​​​4.1.配置说明

参数

参数值

说明

include

mime.types

文件扩展名与文件类型映射表

default_type

application/octet-stream

默认文件类型

log_format

remote_addr

$remote_addr与$http_x_forwarded_for 用于记录客户端的IP地址

http_x_forwarded_for

bytes_sent

发送给客户端的总字节数

time_iso8601

时间格式设定

connection

连接到序列号

connection_requests

当前通过一个链接获得的请求数量

status

用来记录请求状态,成功为200

body_bytes_sent

记录发送给客户端文件主题内容大小

request_time

NGINX收到第一个字节到NGINX把所有响应内容放到TCP发送缓冲区的时间

http_referer

用来记录从哪个页面链接访问过来的

http_user_agent

记录客户端浏览器的相关信息

request

记录请求的URL和HTTP协议

host

标识客户端请求头部中的HOST字段信息,如果Host字段不存在,则以实际处理的servername名称代替

uri

链接字符

server_addr

表示服务器地址

upstream_addr

集群中的服务器IP地址

http

响应协议

upstream_response_time

响应时间

配置示例

    log_format  access-json  '{'    '"@timestamp":"$time_iso8601",'    '"protocol":"http",'    '"host":"$server_addr",'    '"clientip":"$remote_addr",'    '"size":"$body_bytes_sent",'    '"sizeSum":"$bytes_sent",'    '"requesttime":"$request_time",'    '"upstremtime":"$upstream_response_time",'    '"upstremhost":"$upstream_addr",'    '"httphost":"$host",'    '"referer":"$http_referer",'    '"xff":"$http_x_forwarded_for",'    '"agent":"$http_user_agent",'    '"connection":"$connection",'    '"connection_requests":"$connection_requests",'    '"request":"$request",'    '"uri":"$uri",'    '"status":"$status"'    '}';

server_tokens

off

隐藏版本号

sendfile

on

允许sendfile方式传输文件

keepalive_timeout

15

连接超时时间,单位秒

concat

on

开启小文件合并功能

gzip

on

决定是否开启gzip

gzip_vary

on

给CDN和代理服务器使用,针对相同URL,可以根据头信息返回压缩和非压缩本副本

gzip_min_length

1k

当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩处理

gzip_buffers

4 8k

设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间

gzip_comp_level

1

设置gzip压缩等级(1-9),等级越低压缩速度越快文件压缩比月销,反之速度越慢文件压缩比越大

gzip_type

text/plain application/x-javascript text/css text/htm

设置需要压缩的MME类型,非设置值不进行压缩

gzip_http_version

1.1

用户识别http协议的版本,早起的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项,目前此项基本可以忽略

proxy_buffering

off

这个参数配置在http,server,location,用于开启对呗代理服务器的应答缓存

proxy_next_upstream

error timeout http_500 http_502 http_503 http_504

当其中一台返回错误码404,500...等错误的时候,可以分配到下一台服务器程序继续处理,提高平台访问成功率,多可用户前台程序负载

proxy_next_upstream_tries

4

1标识负载一台机器,如果超时则返回,不去伦旭其他机器,如果设备为2,则表示当前机器超时或者错误则继续轮询一次

proxy_read_timeout

180s

此指令用户设置从被代理服务器读取应答内容的超时时间

proxy_send_timeout

180s

后端服务器数据回传时间,就是在规定时间之内后端服务器必须传完所有的数据

client_max_body_size

50m

限制请求体的大小,若超过所设定的大小,返回413错误

underscores_in_headers

on

是否允许在header的字段中待下划线

​​​​​​​4.2. http模块配置参数与说明

4.2.1.RESOLVER部分

当使用域名地址访问NGINX后段服务器地址时,必须添加如下如下DNS解析参数:

当使用域名地址访问NGINX后段服务器地址时,必须添加如下如下DNS解析参数:

参数

参数值

参数说明

address

nginxdnsprd01

配置进行http内配置域名地址解析的DNS域名信息。统一配置为nginxdnsprd01,并在/etc/hosts下配置该地址与实际域名IP地址的映射关系。

valid

10s

覆盖DNS的TTL属性

ipv6

off

禁止对IPv6的解析

​​​​​​​ 4.2.2.UPSTREAM部分

参数

参数值

参数说明

upstream

http_backend01_<PORT>

配置UPSTREAM名字

server

后端主机/IP:端口

定义后段处理请求的服务器和端口

server_weight

3

实现负载均衡(默认为轮询)中基于权重的策略,设置服务器访问地址的权重。

ip_hash

实现负载均衡(默认为轮询)中的客户端IP一致的策略,同一客户端连续的Web请求都会被分发到同一服务器进行处理。

least_conn

实现负载均衡(默认为轮询)中基于连接最少的策略,请求会被转发到连接数最少的服务器

least_time

实现负载均衡(默认为轮询)中基于平均响应时间最短的策略。

sticky

实现负载均衡(默认为轮询)中基于cookie的策略,通过分发和识别cookie,使同一个客户端的请求落在同一台服务器

max_fails

2

基于连接探测。max_fails设定Nginx与服务器通信的尝试失败的次数(默认为1次),fail_timeout 设置进行失败尝试的单位周期(默认为10s)。

如果发现后端异常,对于同一个节点,在单位周期为中达到max_fails次数,那么将把此节点标识为不可以,等待下一个周期,再一次去请求,判断是连接是否成功,如果成功将恢复之前的轮询方式,如果不可用将在下一个周期再试一次。

fail_timeout

30s

​​​​​​​​​​​​​​4.2.3.SERVER部分

参数

参数值

说明

listen

<PORT>

监听端口

location

/uri/

定义根据请求uri的转发规则

location

根据uri路径进行请求转发

map

创建自定义变量,以匹配特定的规则。

error_log

logs/http_err_<PORT>_$logdate.log warn

配置http模块的错误日志路径和级别。

access_log

logs/http_access_<PORT>_$logdate.log

配置stream模块的访问日志的路径。

​​​​​​​​​​​​​​4.2.4.LOCATION部分

Location语法规范为:location [匹配运算符号] uri { … }。  

参数

参数值

说明

location

[运算符] uri

其中匹配运算符以及优先级关系如下:

  1. = 开头表示精确匹配
  2. ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格),以xx开头
  3. ~ 开头表示区分大小写的正则匹配,以xx结尾
  4. ~* 开头表示不区分大小写的正则匹配,以xx结尾
  5. !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配的正则
  6. / 通用匹配,任何请求都会匹配到。

根据以上匹配优先级,从上至下匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

root

path

配置请求达到后的文件根目录。path可基于nginx安装目录的相对路径,也可设置path为文件系统绝对路径。统一使用绝对路径。uri、path目录后面带不带"/",不会影响访问

location /static/a/ {

       root   /app/nginx/html/; }

请求"/static/a/123/test.html"文件,nginx将转到"/app/nginx/html/static/a/123/test.html"文件

alias

path

配置uri对应的别名路径。path可基于nginx安装目录的相对路径,也可设置path为文件系统绝对路径。

 uri "/"结束,path必须以"/"结束。

location  /itsm/ {

   alias  /app/nginx/html/;}

请求"/itsm/456/test.html"将转到:"/app/nginx/html/456/test.html"。

index

指定初始首页如果包括多个文件,Nginx会根据文件的枚举顺序来检查,直到查找的文件存在

proxy_pass

http[s]://ip:port

配置进行请求的转发proxy_pass的ip:port之后以"/"结尾只传递后续路径;不以"/"结尾传递完整路径

location  /bbbb/ {

  proxy_pass http://127.0.0.1:8888/test/;}

请求"http://ip1:port1/bbbb/a/a/test.html"将转到"http://127.0.0.1:8888/test/a/a/test.html"

rewrite

regex replacement [flag]

实现正则匹配上后替换成新的path,以实现url替换。根据flag的不同进行不同的处理,其中redirect和permanent进行外部重定向;beak和last进行内部重定向;其中我们需要注意的是flag可为空,为空则接着往下走直到/break中断/last 中断&& location重匹配


网站公告

今日签到

点亮在社区的每一天
去签到