最近由于项目需要 在搭配LNMP 环境时对nginx得一些配置不够熟练, 写下来做做笔记。
nginx.conf --
user xxx; 此处配置为nginx 得运行用户, 一些默认为nobady, 建议另创建一个用户 例如: nginx, 以这个用户运行nginx, 最好不要直接用root, 虽然这样做得话可能之后不会存在太大得权限问题, 不过这么做得话可能对这个服务的安全性产生威胁;
worker_processes 为nginx 开启的进程数 , 根据官发说法,开启多个可以减少IO负担;
worker_rlimit_nofile 更改worker进程的最大打开文件数限制(最大文件描述符数)。如果没设置的话,这个值为操作系统的限制(ulimit -n )。设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样nginx就不会有“too many
open files”问题了
error_log logs/* 明显是错误日志文件 此处可以自己设置其级别 info / debug .... 它会根据级别的不同在日志的一些信息呈现也不同
pid logs/nginx.pid; 进程文件; 进程号
events
{
use epoll; 此处指明其工作方式, 本人用的是epoll 这个高性能工作方式 linux2.6+ 最好用epoll *BSD 用kqueque
worker_connections
1024 此处为单进程下的最大连接数
}
http{
include
mime.types;
default_type
application/octet-stram;
charset UTF-8 字符编码
server_tokens
off 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的
sendfile
on; 开启高效文件传输模式, 可以让sendfile()发挥作用。sendfile()可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符)。Pre-sendfile是传
送数据之前在用户空间申请数据缓冲区。之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据写入网络。sendfile()是立即将数据从磁盘读到OS缓存。因为
这种拷贝是在内核完成的,sendfile()要比组合read()和write()以及打开关闭丢弃缓冲更加有效
tcp_nopush 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送。这样做可以避免网络拥塞
tcp_nodelay 告诉nginx不要缓存数据,而是一段一段的发送--当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值,这样做的话在用户的交互性和体验能够有好处
(上述的三个参数的详细内容可看 http://www.2cto.com/os/201306/222745.html)
access_log off ; 设置nginx是否将存储访问日志。关闭这个选项可以让读取磁盘IO操作更快
keepalive 给客户端分配keep-alive链接超时时间
send_timeout 指定客户端的响应超时时间, 在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接
gzip on ; gzip是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量
}