# 运行用户
user nginx;
# 工作进程数, 通常设置成和cpu的数量相等
worker_processes 4;
# PID 文件, 记录当前启动的nginx 的进程ID
pid /var/run/nginx.pid;
# 全局错误日志
error_log /var/log/nginx/error.log warn;
# 更改worker 进程的最大打开文件数, 这个值为操作系统限制。使用ulimit -n 命令查看
worker_rlimit_nofile 1024;
# 工作模式及连接数上限
events {
# 事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
# epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型, 如果跑在FreeBSD上面, 就用kqueue模型。
use epoll;
# 单个后台worker process 进程允许的最大链接数 (最大连接数=连接数*进程数)
worker_connections 1024;
# nginx 收到新的连接通知后 接受尽可能多的连接
multi_accept on;
}
# HTTP 模块 , 控制着nginx http 处理的所有核心特性
http {
# 设置 mine类型(邮件支持类型), 类型由mine.types文件定义
include /etc/nginx/mime.types;
# 设置文件类型, 默认 MIME-type。
default_type application/octet-stream;
# 设置默认编码
charset utf-8;
# #服务器名字的hash表大小
server_names_hash_bucket_size 128;
# 客户端请求头部的缓冲区大小, 这个可以根据您的系统分页大小来设置, 一般一个请求头的大小不会超过1k,
# 不过由于一般系统的分页都要大于1K,所以这里设置为分页大小。
# 使用 getconf PAGESIZE 命令 获取分页大小 , 如果超过分页的情况 必须是系统分页大小的整倍数。
client_header_buffer_size 32k;
# 客户请求头缓冲大小
large_client_header_buffers 4 32k;
# 设定通过nginx 上传文件的大小
client_max_body_size 300m;
# 设置 读取客户端请求正文的缓冲区大小。 默认值 x86和32-bit 为8k , 64-bit 为16k
client_body_buffer_size 512k;
# 与代理服务器建立连接的超时时间. Default: 60s
proxy_connect_timeout 60;
# 连接成功后 从代理服务器读取的响应超时时间 Default: 60s
proxy_read_timeout 60;
# 设置向代理服务器发送请求的超时时间。 Default 60s
proxy_send_timeout 120;
# 从代理服务器读取第一部分应答的缓冲区大小,
# 默认情况下 这个值的大小为指令 proxy_buffers 中指定的第一个缓冲区的大小, 可以设置为更小
proxy_buffer_size 16k;
# 从单个连接的代理服务器读取响应的缓冲区的数量和大小 Default: 4k|8k
proxy_buffers 4 64k;
# 限制在响应尚未完全读取时 可能忙于向客户端发送响应的缓冲区的总大小。 Default: 8k|16k
proxy_busy_buffers_size 128k;
# 设置 写入proxy_temp_path时数据的大小, 预防一个工作进程在传递文件时阻塞太长 Default: 8k|16k
proxy_temp_file_write_size 128k;
# 设置日志的输出格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# nginx 请求日志
access_log /var/log/nginx/access.log main;
# sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件, 对于普通应用,
# 必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,
# 可设置为 off, 以平衡磁盘与网络I/O处理速度, 降低系统的uptime.
sendfile on;
# 开启或关闭nginx在FreeBSD上使用TCP_NOPUSH套接字选项, 在linux上使用TCP_CORK 套件字选项,
# 选项仅在使用sendfile 的时候才开启。
# tcp_nopush on;
# 开启或关闭nginx使用TCP_NODELAY选项的功能,
# 这个选项仅在将连接转变为长连接的时候才被开启(在upstream发送响应到客户端时也会启用)
# tcp_nodelay on;
# 长连接超时时间, 单位秒
keepalive_timeout 65;
# 启用 gzip 压缩功能
gzip on;
# 默认值是1.1,就是说对HTTP/1.1协议的请求才会进行gzip压缩
gzip_http_version 1.1;
# 最小压缩的页面,如果页面过于小,可能会越压越大,这里规定大于1K的页面才启用压缩
gzip_min_length 1k;
# 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流
gzip_buffers 4 16k;
# nginx 做前端代理时启用该选项,后端服务器的headers头启用压缩面才启用压
gzip_proxied expired no-cache no-store private auth;
# 什么类型的页面或文档启用压缩
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
# 压缩级别,1压缩比最小处理速度最快,9压缩比最大但处理最慢,同时也最消耗CPU,一般设置为3就可以了
gzip_comp_level 3;
# 其它的配置文件存放路径
include /etc/nginx/conf.d/*.conf;
}