1、nginx.conf文件:
user username #指定允许ninx的用户名
worker_processes 11; #一般为物理核心数-1,
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000; #绑定nginx允许的CPU核心
error_log /var/log/nginx/error1.log; #nginx错误日志的保存路径
pid /path/to/pidfile_name; 指定pid文件的路径,编译的时候可以指定,边以后也可以在配置文件重新指定,是必备的指令
worker_rlimit_nofile #指定一个worker进程所能够打开的最大文件句柄数;
worker_rlimit_sigpending #;设定每个用户能够发往worker进程的信号的数量;
events {
worker_connections 2048; #每个woker进程能打开的最大连接数
multi_accept on; #是否允许一次性地响应多个用户请求
use epoll; #定义使用的事件模型,建议让nginx自动选择;
}
用于调试、定位问题:只调试nginx时候使用
1、daemon[on|off]
默认为on,调试时要设置为off,使得所有信息直接输出到调试台。
2、master_processon|off
默认就是on,调试时可以将master关闭只启动一个worker,方便定位问题。即以woker模式运行nginx
3、error_log/path/to/error_log level;
错误日志文件及其级别;默认为error级别;调试时可以使用debug级别,但要求在编译时必须使用--with-debug启用debug功能;
server_tokens off; #隐藏错误页面的nginx版本信息
keepalive_timeout time; 保持连接的超时时长;默认为75秒;
keepalive_requests n; 在一次长连接上允许承载的最大请求数;
keepalive_disable [msie6 | safari | none ] 对指定的浏览器禁止使用长连接;
tcp_nodelay on|off #发送响应的超时时长
client_header_timeout time; #即读取http请求首部的超时时长,默认60秒,对链路不好的情况可以调小一点
client_body_timeout time; #读取http请求包体的超时时长默认60秒,对链路不好的情况可以调小一点
send_timeout time; # 发送给用户但是用户接收的超时时长,发送响应的超时时长
对客户端请求的限制:
limit_exceptmethod ...
允许使用除了写在这里的以外的方法,即写在里面的不能用
指定对范围之外的其它方法的访问控制;
limit_exceptGET {
allow172.16.0.0/16;
denyall;
}
2、client_max_body_sizeSIZE;
http请求包体的最大值;常用于限定客户所能够请求的最大包体;根据请求首部中的Content-Length来检测,以避免无用的传输;
3、limit_ratespeed;
限制客户端每秒钟传输字节的字节数;默认为0,表示没有限制;
4、limit_rate_aftertime;
nginx向客户发送响应报文时,如果时长超出了此处指定的时长,则后续的发送过程开始限速;
文件操作的优化:
1、sendfileon|off
是否启用sendfile功能;
2、aio on|off
是否启用aio功能;
3、open_file_cachemax=N [inactive=time]|off
是否打开文件缓存功能;
max: 缓存条目的最大值;当满了以后将根据LRU算法进行置换;
inactive:某缓存条目在指定时长时没有被访问过时,将自动被删除;默认为60s;
缓存的信息包括:
文件句柄、文件大小和上次修改时间;
已经打开的目录结构;
没有找到或没有访问权限的信息;
4、open_file_cache_errorson|off
是否缓存文件找不到或没有权限访问等相关信息;
5、open_file_cache_validtime;
多长时间检查一次缓存中的条目是否超出非活动时长,默认为60s;
6、open_file_cache_min_use#;
在inactive指定的时长内被访问超此处指定的次数地,才不会被删除;
对客户端请求的特殊处理:
1、ignore_invalid_headerson|off
是否忽略不合法的http首部;默认为on; off意味着请求首部中出现不合规的首部将拒绝响应;只能用于server和http;
2、log_not_foundon|off
是否将文件找不到的信息也记录进错误日志中;
3、resolveraddress;
指定nginx使用的dns服务器地址;
4、resover_timeouttime;
指定DNS解析超时时长,默认为30s;
5、server_tokenson|off;
是否在错误页面中显示nginx的版本号;
内存及磁盘资源分配:
1、client_body_in_file_onlyon|clean|off
HTTP的包体是否存储在磁盘文件中;off表示不存储,非off表示都存储,即使包体大小为0也会创建一个磁盘文件;on表示请求结束后包体文件不会被删除,clean表示会被删除;
2、client_body_in_single_bufferon|off;
HTTP的包体是否存储在内存buffer当中;默认为off;
3、cleint_body_buffer_sizesize; #默认为8k
nginx接收HTTP包体的内存缓冲区大小;
4、client_body_temp_pathdir-path [level1 [level2 [level3]]]; #是个目录文件夹,可以是多级目录,多级目录可以防止一个目录下文件过多而导致检索变慢
HTTP包体存放的临时目录;
client_body_temp_path/var/tmp/client/ 1 2
1 1个16进制的1级子目录,即1x16等于16个16进制的1级子目录
2 2个16进制的2级子目录,即16x16等于256个16进制的二级子目录
5、client_header_buffer_sizesize;
正常情况下接收用户请求的http报文header部分时分配的buffer大小;默认为1k;
6、large_client_header_buffersnumber size;
存储超大Http请求首部的内存buffer大小及个数;
7、connection_pool_sizesize;
nginx对于每个建立成功的tcp连接都会预先分配一个内存池,此处即用于设定此内存池的初始大小;默认为256;
8、request_pool_sizesize;
nginx在处理每个http请求时会预先分配一个内存池,此处即用于设定此内存池的初始大小;默认为4k;
文件传输及压缩:
include /etc/nginx/mime.types; 在当前文件中包含另一个文件的内容,可以/opt/nginx.d/*.conf
default_type text/html; 设置文件使用的默认的MIME-type。
charset UTF-8; 设置头文件中的默认的字符集
gzip on; 告诉nginx采用gzip压缩的形式发送数据,这将会减少我们发送的数据量。
gzip_disable "msie6"; 为指定的客户端禁用gzip功能
# gzip_static on; gzip_static 告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源,从而允许你使用最高压缩比,这样nginx就不用再压缩这些文件了
gzip_proxied any 许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求.
gzip_min_length 1000;设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度。
gzip_comp_level 4;设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。我们设置为4,这是一个比较折中的设置。
gzip_types text/plain text/css application/json application/x avascript text/xml application/xml application/xml+rss text/javascript; 设置需要压缩的数据格式。
举例设置nginx:
user www-data;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
access_log off;
error_log /var/log/nginx/error.log crit;
keepalive_timeout 10;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10;
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 100;
include /etc/nginx/mime.types;
default_type text/html;
charset UTF-8;
gzip on;
gzip_disable "msie6";
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
open_file_cache max=100000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
本文出自 “Linux” 博客,请务必保留此出处http://zhangshijie.blog.51cto.com/806066/1642553
原文地址:http://zhangshijie.blog.51cto.com/806066/1642553