Nginx的配置
配置文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
全局块
影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等
events块
配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等
http块
主要作用是配置http服务器,利用此配置实现反向代理功能和负载均衡支持。此参数可以嵌套多个server。文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等
server全局块
配置虚拟主机的相关参数,一个http中可以有多个server
location块
配置请求的路由,以及各种页面的处理情况
配置参数
Nginx配置格式为
key value;
。键和值之间有空格,最后以;结尾
全局块参数
键 | 作用 | 示值例 |
---|---|---|
user | 配置用户或者组 | nobody nobody |
worker_processes | 允许生成的进程数 | 2 |
pid | 指定nginx进程运行文件存放地址 | /nginx/pid/nginx.pid |
error_log | 制定日志路径 级别。这个设置可以放入全局块,http块,server块 | log/error.log debug |
worker_rlimit_nofile | 一个nginx进程打开的最多文件描述符数目 | 65535 |
events块参数
键 | 作用 | 示值例 |
---|---|---|
use | 事件驱动模型 | epoll (可选参数:select、poll、kqueue、epoll、resig、eventport) |
worker_connections | 最大连接数 | 1024 |
accept_mutex | 设置网路连接序列化 | on |
multi_accept | 设置一个进程是否同时接受多个网络连接 | off |
http块参数
http服务器配置
键 | 作用 | 示值例 |
---|---|---|
include | 设定mime类型 | mime.types |
default_type | 默认文件类型 | text/plain |
server_names_hash_bucket_size | 服务器名字的hash表大小 | 128 |
client_header_buffer_size | 客户端请求头部的缓冲区大小 | 4k |
large_client_header_buffers | 客户请求头缓冲大小。nginx默认会用client_header_buffer_size;header过大,它会使用large_client_header_buffers来读取 | 8 128k |
client_max_body_size | 请求缓存 | 8m |
keepalive_timeout | 连接超时时间,默认为75s,可以在http,server,location块 | 75 |
autoindex | 显示目录 | on |
autoindex_exact_size | 默认为on,显示出文件的确切大小,单位是bytes 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB | 显示文件大小 |
autoindex_localtime | 显示文件时间 默认为off,显示的文件时间为GMT时间 改为on后,显示的文件时间为文件的服务器时间 | on |
sendfile | 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块 | on |
tcp_nopush | 防止网络阻塞 | on |
tcp_nodelay | 防止网络阻塞 | on |
fastcgi_send_timeout | 是指nginx进程向fastcgi进程发送request的整个过程的超时时间 | 300 |
fastcgi_read_timeout | 是指fastcgi进程向nginx进程发送response的整个过程的超时时间 | 300 |
fastcgi_connect_timeout | 链接超时时间 | 300 |
fastcgi_buffer_size | 缓存大小 | 64k |
fastcgi_buffers | 缓存 | 4 64k |
fastcgi_busy_buffers_size | 128k | |
fastcgi_temp_file_write_size | 128k | |
access_log | 取消服务日志 | off |
log_format | 日志格式设置 | myFormat ‘ s t a t u s [ status [ status[time_local] $remote_addr h o s t host hostrequest_uri $sent_http_location’; |
sendfile_max_chunk | 每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限 | 100k |
error_page | 错误页 | 404 https://www.baidu.com; |
gzip | 开启gzip压缩输出 | on |
gzip_min_length | 允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大 | 1k |
gzip_buffers | 申请n个单位为mk的内存作为压缩结果流缓存 | 4 16k |
gzip_http_version | 压缩版本 | 1.1 |
gzip_comp_level | 压缩等级.1压缩比最小,处理速度快.9压缩比最大,比较消耗cpu资源 | 2 |
gzip_types | 压缩类型 | text/plain application/x-javascript text/css application/xml; |
gzip_vary | 选项可以让前端的缓存服务器缓存经过gzip压缩的页面 | on |
upstream | 负载均衡内容,下面单独说明 |
日志格式参数
参数 | 含义 |
---|---|
r e m o t e a d d r 与 remote_addr与 remoteaddr与http_x_forwarded_for | 客户端的ip地址 |
$remote_user | 客户端用户名称 |
$time_local | 访问时间与时区 |
$request | 记录请求的url与http协议 |
$status | 请求状态;成功是200 |
$body_bytes_sent | 发送给客户端文件主体内容大小 |
$http_referer | 记录从那个页面链接访问过来的 |
$http_user_agent | 记录客户浏览器的相关信息 |
server全局块参数
虚拟主机配置
键 | 作用 | 示值例 |
---|---|---|
listen | 监听端口 | 4545 |
listen | 监听端口 https | 443 ssl |
server_name | 监听地址 | 127.0.0.1 |
rewrite | HTTP 自动跳转 HTTPS | https://www.baidu.com; |
root | 根目录 | path |
ssl_certificate | C:\WebServer\Certs\certificate.crt; | |
ssl_certificate_key | C:\WebServer\Certs\private.key; | |
ssl_session_cache | shared:SSL:1m; | |
ssl_session_timeout | 5m; | |
ssl_protocols | SSLv2 SSLv3 TLSv1; | |
ssl_ciphers | ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; | |
ssl_prefer_server_ciphers | on; | |
index | 设置默认页 | index.html |
keepalive_requests | 单连接请求上限次数 |
location块参数
location参数格式为
location 请求的url过滤 {
......
}
在location和代码块之间需要提供进行url过滤的匹配规则
键 | 作用 | 示值例 |
---|---|---|
root | 根目录 | path |
deny | 拒绝的ip | 127.0.0.1 |
allow | 允许的ip | 127.0.0.1 |
proxy_pass | 服务器列表 | 127.0.0.1:8080 (在配置了负载均衡的时候upstream,此位置指向负载均衡的名字) |
proxy_temp_file_write_size | 高负荷下缓冲大小 | 64k |
proxy_connect_timeout | nginx跟后端服务器连接超时时间 | 10080s |
proxy_send_timeout | 后端服务器数据回传时间 | 10080 |
proxy_read_timeout | 连接成功后,后端服务器响应时间 | 10080 |
proxy_buffer_size | 设置代理服务器 | 64k |
proxy_buffers | proxy_buffers缓冲区 | 16 32k |
proxy_busy_buffers_size | 高负荷下缓冲大小 | 64k |
proxy_request_buffering | off | |
proxy_buffering | off | |
proxy_redirect | off | |
proxy_set_header | Host $host | |
proxy_http_version | 1.1 | |
client_max_body_size | 允许客户端请求的最大单文件字节数 | 1024m |
client_body_buffer_size | 缓冲区代理缓冲用户端请求的最大字节数 | 128k |
负载均衡配置
负载均衡需要在
http
代码块中配置upstream
然后在server
的location
代码块中的proxy_pass
中使用;下面是一个使用示例
## 指定了负载均衡
http:{
......
upstream myserver {
server 127.0.0.1:7878;
server 127.0.0.1:7879 backup; #热备
}
server {
......
location test/ {
proxy_pass myserver;
......
}
}
......
}
负载均衡可选模式
模式 | 说明 | 模式参数 |
---|---|---|
热备 | 当一台服务器发生事故时,才启用第二台服务器给提供服务 | 127.0.0.1:8080 backup |
轮询 | 将请求顺序的分配给各服务器 | 无需参数 |
加权轮询 | 跟据配置的权重的大小而分发给不同服务器不同数量的请求 | 127.0.0.1:8080 weight=1 |
hash | nginx会让相同的客户端ip请求相同的服务器 | upstream 代码块中单独一行添加ip_hash; |
负载均衡其他参数
处理均衡模式还可以配置其他参数
模式参数 | 说明 |
---|---|
down | 表示当前的server暂时不参与负载均衡 |
backup | 预留的备份机器 |
max_fails | 允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误 |
fail_timeout | 在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。 |
weight | 负载的权重就越大 |
使用示例
upstream myserver {
server 127.0.0.1:8080 weight=2 max_fails=2 fail_timeout=2;
server 127.0.0.1:80 weight=1 max_fails=2 fail_timeout=1;
}
个人水平有限,上面的内容可能存在没有描述清楚或者错误的地方,假如开发同学发现了,请及时告知,我会第一时间修改相关内容。假如我的这篇内容对你有任何帮助的话,麻烦给我点一个赞。你的点赞就是我前进的动力。