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]
[setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size]
[accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport]
[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol]
[setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size]
[sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off]
[reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol]
[backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter]
[deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

设置监听地址,可以同时指定地址和端口,也可以仅指定地址或端口。  listen *:80 | *:8000;  server

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

配置 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改变)。
break:停止当前的重写指令,按新 URL 查找资源; 浏览器URL不变(重写URL不以"http://"、"https://"、"$scheme"开头,否则URL改变)。
redirect:返回 302 临时重定向,浏览器 URL 改变
permanent:返回 301 永久重定向,浏览器 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
       

 

 

参考:https://nginx.org/en/docs/dirindex.html

posted @ 2023-05-07 20:56  且行且码  阅读(621)  评论(0编辑  收藏  举报