前言:Nginx?为什么选择Nginx?还不用Nginx你就out了。Nginx相比Apache拥有更块、高扩展性、高可用性、低内存消耗、单机支持10万以上并发等等。后面将分为几篇文章来简单介绍Nginx的配置等说明。
nginx.conf配置通用语法
块配置项
块配置项由一个块配置项名和一对大括号组成如:
user nobody;
worker_processes 8;
error_log logs/error.log;
pid logs/nginx.pid;//注释掉并不会生效的配置
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
…
}
块配置项由一个块配置项名和一对大括号组成如:
上面代码段中的events、http等都是块配置项。
nginx配置文件中“#”代表注释这之后的配置
定义nginx-worker运行的用户和及用户组
注:nginx需要使用到其他的一些组件来支持,所以最好以root身份来运行,而#master进程管理#worker进程,master进程的权限需高于管理的worker进程,#所以worker应运行的权限低于master
user username groupname;
调试日志类别
全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
注:日志路径设置成/dev/null就不会输出任何日志,也是关闭日志的唯一手段,如需要debug输出所有日志,必须要在编译configure时加入—with-debug配置项。
error_log /var/log/nginx/error.log info;
正常运行配置项
嵌入其他配置文件。将其他配置文件嵌入到当前的nginx.conf文件中,参数绝对路径或者相对路径,相对路径是当前配置文件的
Include /path/file
保存master进程ID的pid文件存放的路径。默认与configure执行时的参数“—pid-path”所指向的路径是相同的,默认文件存放路径logs/nginx.pid
pid path/file;
设置每个用户发往nginx的信号队列的大小,也就是说,当某个用户的信号队列满了,这个用户再发送的信号量会被丢弃。
worker_rlimit_sigpending limit;
性能优化配置项
nginx进程数,建议设置为等于CPU总核心数。
每个worker进程都是单线程的进程,如果多于CPU内核数,那么会增大进程间切换带来的消耗。
worker_processes 8;
绑定nginx进程到指定CPU内核(8颗CPU内核),每个worker进程都独享一个CPU,就在内核的调度策略上实现了完全的并发,不会出现多个worker进程都在抢同一个CPU,这就会出现同步的问题。
worker_cpu_affinity 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001;
事件类配置项
accept_mutex是Nginx的负载均衡锁,当某一个worker进程建立的连接数达到worker_connections配置的最大连接数的7/8时,会大大地减小该worker进程试图建立新TCP连接的机会,以此实现所有worker进程之上处理的客户端请求数量接近,默认开启。
accept_mutex on;
在使用accept锁后,同一时间只有一个worker进程能够取到accept锁。这个accept锁不是阻塞锁,如果取不到会立刻返回。如果有一个worker进程试图取accept锁而没有取到,它至少要等accept_mutex_delay定义的时间间隔后才能再次试图取锁。
accept_mutex_delay 500ms;
批量建立新连接,当时间模型通知有新连接时,尽可能的对本次调度的客服端发起的所有TCP请求都建立连接。
multi_accept off;
选择事件模型,Nginx会自动使用最适合的事件模型,建议Linux内核版本2.6以上选择使用Epoll。
use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
定义每个worker进程可以同时处理的最大连接数,根据自身的需求而定,太大可能导致负载均衡锁失去作用,8个woeker只有一个非常忙碌,太小又会直接影响到Nginx可处理的最大连接数(最大连接数=worker_processes*worker_connections)
worker_connections 20480;
Nginx为配置一个完整的静态web服务器提供了非常多的功能,主要分为八类:虚拟主机与请求分发、文件路径定义、内存及磁盘资源的分配、网络连接的设置、MIME类型的设置、对客户端请求的限制、文件操作的优化、对客户端请求的特殊处理。
Nginx网络参数优化-Linux网络参数优化->http://blog.csdn.net/hatsune_miku_/article/details/77865780
博客原创:写作不易,转载请标明出处。文章地址:http://blog.csdn.net/hatsune_miku_/article/details/78077683(๑˃∀˂๑)♪阿里嘎多(๑˃∀˂๑)♪
Nginx配置详情-配置说明-参数优化(一)
Nginx配置详情-配置说明-参数优化-核心HTTP配置(二)
Nginx配置详情-配置说明-参数优化-ngx_http_core_module模块变量(三)
Nginx配置详情-配置说明-参数优化-Nginx反向代理、负载均衡(四)