Nginx 入门实战(3)--Nginx 常用配置参数说明
Nginx 中包含众多的参数,这些参数影响 Nginx 的行为;本文主要介绍一些常用的参数。
1、Nginx 配置文件基本结构
Nginx 的配置文件为 conf/nginx.conf,配置文件由配置指令/参数组成,有些指令/参数位于 main 的位置(如:events、http),有些指令/参数位于其他参数下(如:server 位于 http 下);以下是一个简单的 Nginx 配置文件样例,其中配置了一个端口为 8080 的 http 服务,还配置了一个端口为 9090 的 TCP 服务。
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } stream { server { listen 9090; proxy_pass 10.49.196.30:9090; } }
2、常用参数说明
参数 | 说明 | 默认值 | 位置 |
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; access_log off; |
设置访问日志文件及日志格式 | access_log logs/access.log combined; | http, server, location, if in location, limit_except |
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; access_log off; |
设置访问日志文件及日志格式 | http, server, location, if in location, limit_except | |
add_header name value [always]; | 添加响应头 | http, server, location, if in location | |
alias path; | 设置目录别名,location 必须用 "/" 结束;文件的路径通过将 URI 去除 location 部分再添加到 alias 指令的值来构建。 | location | |
allow address | CIDR | unix: | all; | 设置允许访问的地址 | http, server, location, limit_except | |
auth_basic string | off; | 使用“HTTP基本身份验证”协议对用户名和密码进行验证 | auth_basic off; | http, server, location, limit_except |
auth_basic_user_file file; | 设置用户名/密码文件 | http, server, location, limit_except | |
autoindex on | off; | 是否列出目录下的文件 | autoindex off; | http, server, location |
autoindex_exact_size on | off; | on:显示文件的确切大小,单位为 byte;off:显示文件的大概大小,单位为 K、M、G | autoindex_exact_size on; | http, server, location |
autoindex_localtime on | off; | on:显示文件的本地时间;off:显示文件的 UTC 时间 | autoindex_localtime off; | http, server, location |
charset charset | off; | 将指定的字符集添加到“Content-Type”响应头中 | charset off; | http, server, location, if in location |
client_body_buffer_size size; | 设置客户端请求正文的缓冲区大小 | client_body_buffer_size 8k|16k; | http, server, location |
client_header_buffer_size size; | 设置客户端请求头的缓冲区大小 | client_header_buffer_size 1k; | http, server |
client_max_body_size size; | 设置客户端请求正文的最大允许大小 | client_max_body_size 1m; | http, server, location |
default_type mime-type; | 定义响应的默认 MIME 类型 | efault_type text/plain; | http, server, location |
deny address | CIDR | unix: | all; | 设置拒绝访问的地址 | http, server, location, limit_except | |
error_log file [level]; | 设置日志文件及日志级别 | error_log logs/error.log error; | main, http, mail, stream, server, location |
error_page code ... [=[response]] uri; | 设置错误页面 uri | http, server, location, if in location | |
events { ... } | 连接相关配置上下文 | main | |
gzip on | off; | 响应是否使用 gzip 压缩 | gzip off; | http, server, location, if in location |
http { ... } | Http 配置上下文 | main | |
include file | mask; | 通过文件名或文件权限码引入文件 | any | |
index file ...; | 设置初始页面文件;可以设置多个文件,Nginx 会按照指定顺序来检查,在找到一个存在的文件后停止检查。 | index index.html; | http, server, location |
ip_hash; | 基于客户端 IP 分配请求的负载均衡方法 | upstream | |
keepalive_timeout timeout [header_timeout]; | 第一个参数设置保持活动状态的超时时间,第二个参数设置响应头:Keep-Alive: timeout=time | keepalive_timeout 75s; | http, server, location |
large_client_header_buffers number size; | 设置大客户端请求头的缓冲区数量和大小 | large_client_header_buffers 4 8k; | http, server |
least_conn; | 一种负载均衡算法:请求被分配给具有最少活动连接数的服务器 | upstream | |
limit_conn zone number; | [ngx_http_limit_conn_module]设置使用的共享内存区域及最大并发连接数;如:limit_conn perserverZone 5; | http, server, location | |
limit_conn zone number; | [ngx_stream_limit_conn_module]设置使用的共享内存区域及最大并发连接数;如:limit_conn perserverZone 5; | stream, server | |
limit_conn_zone key zone=name:size; | [ngx_http_limit_conn_module]设置共享内存区域,包括存储的 key、区域名称及区域大小;如:limit_conn_zone $server_name zone=perserverZone:10m; | http | |
limit_conn_zone key zone=name:size; | [ngx_stream_limit_conn_module]设置共享内存区域,包括存储的 key、区域名称及区域大小;如:limit_conn_zone $server_name zone=perserverZone:10m; | stream | |
limit_req zone=name [burst=number] [nodelay | delay=number]; | 设置使用的共享内存区域、超过请求速率的缓存队列大小、缓存中的请求不延迟处理(nodelay)或延迟处理的个数(delay=number);如:limit_req zone=peripZone burst=5 nodelay; | http, server, location | |
limit_req_zone key zone=name:size rate=rate [sync]; | 设置共享内存区域,包括存储的 key、区域名称、区域大小以及请求速率;如:limit_req_zone $binary_remote_addr zone=peripZone:10m rate=100r/m; | http | |
listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] |
设置监听地址,可以同时指定地址和端口,也可以仅指定地址或端口。 | listen *:80 | *:8000; | server |
location [ = | ~ | ~* | ^~ ] uri { ... } |
配置 URI | server, location | |
log_format name [escape=default|json|none] string ...; | [ngx_http_log_module]定义日志格式,通过 name 指定日志格式的名称 | log_format combined "..."; | http |
log_format name [escape=default|json|none] string ...; | [ngx_stream_log_module]定义日志格式,通过 name 指定日志格式的名称 | stream | |
pid file; | 设置主进程的进程ID文件 | pid logs/nginx.pid; | main |
proxy_buffer_size size; | 设置第一代理服务器响应缓冲区大小 | proxy_buffer_size 4k|8k; | http, server, location |
proxy_buffering on | off; | 是否开启代理服务器响应缓冲区 | proxy_buffering on; | http, server, location |
proxy_buffers number size; | 设置代理服务器响应缓冲区数量和大小 | proxy_buffers 8 4k|8k; | http, server, location |
proxy_busy_buffers_size size; | 设置在响应未完全读取的情况下可以用于向客户端发送响应的所有缓冲区的总大小 | proxy_busy_buffers_size 8k|16k; | http, server, location |
proxy_connect_timeout time; | 设置与代理服务器建立连接的超时时间 | proxy_connect_timeout 60s; | http, server, location |
proxy_read_timeout time; | 设置从代理服务器读取响应的超时时间 | proxy_read_timeout 60s; | http, server, location |
proxy_send_timeout time; | 设置向代理服务器传输请求的超时时间 | proxy_send_timeout 60s; | http, server, location |
proxy_pass URL; | 设置代理地址 | location, if in location, limit_except | |
proxy_set_header field value; | 重新定义传递给代理服务器的请求头 | proxy_set_header Host $proxy_host; proxy_set_header Connection close; |
http, server, location |
rewrite regex replacement [flag]; |
URL 重新,用于请求的重定向 last:停止当前的重写指令,按新URL重新发起请求,浏览器URL不变(重写URL不以"http://"、"https://"、"$scheme"开头,否则URL改变)。 |
server, location, if | |
root path; | 设置请求的根目录。仅通过将 URI 添加到 root 指令的值来构建文件的路径。如果必须修改URI,则应使用 alias 指令。 | root html; | http, server, location, if in location |
sendfile on | off; | 是否使用 sendfile() 方法 | sendfile off; | http, server, location, if in location |
server { ... } | 虚拟服务器配置 | http | |
server_name name ...; | 设置虚拟服务器的名称 | server_name ""; | server |
ssl_certificate file; | 设置虚拟服务器的 PEM 格式证书文件 | http, server | |
ssl_certificate_key file; | 设置虚拟服务器的 PEM 格式密钥文件 | http, server | |
ssl_ciphers ciphers; | 设置启用的密码套件 | ssl_ciphers HIGH:!aNULL:!MD5; | http, server |
ssl_client_certificate file; | 设置用于验证客户端证书的 CA 证书 | http, server | |
ssl_prefer_server_ciphers on | off; | 当使用 SSLv3 和 TLS 协议时,服务器密码套件释放优先于客户端密码套件 | ssl_prefer_server_ciphers off; | http, server |
ssl_session_cache off | none | [builtin[:size]] [shared:name:size]; | 设置会话缓存的类型和大小 | ssl_session_cache none; | http, server |
ssl_session_timeout time; | 设置 session 超时时间 | ssl_session_timeout 5m; | http, server |
ssl_verify_client on | off | optional | optional_no_ca; | 是否启用对客户端证书的验证 | ssl_verify_client off; | http, server |
stream { ... } | TCP 配置上下文 | main | |
stub_status; | 开启查看基本状态信息 | server, location | |
tcp_nopush on | off; | 是否启用 FreeBSD 上的 TCP_NOPUSH 套接字选项或 Linux 上的 TCP_CORK 套接字选项;该选项仅在使用 sendfile 时有效。 | tcp_nopush off; | http, server, location |
try_files file ... uri; try_files file ... =code; |
按指定顺序检查文件,并使用第一个找到的文件处理请求 | server, location | |
worker_connections number; | 设置工作进程最大并发连接数 | worker_connections 512; | events |
worker_processes number | auto; | 设置工作进程的数量 | worker_processes 1; | main |
use method; | 指定要使用的连接处理方法。通常不需要显式指定,nginx 默认会使用最有效的方法。连接方法的详细说明可参考:https://nginx.org/en/docs/events.html。 | events | |
user user [group]; | 设置工作进程的用户和组 | user nobody nobody; | main |