首页 > 代码库 > nginx 基本配置分析

nginx 基本配置分析

最近由于项目需要 在搭配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_typeapplication/octet-stram;

charset UTF-8 字符编码

server_tokensoff 并不会让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压缩的形式发送数据。这将会减少我们发送的数据量

}


nginx 基本配置分析