黑马程序员技术交流社区

标题: linux nginx-配置笔记2 [打印本页]

作者: 李悦    时间: 2014-10-16 12:36
标题: linux nginx-配置笔记2
Nginx配置文件结构

配置与调试Nginx(nginx.conf)
         Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstrea(负载均衡服务器设置)和location(URL匹配指定位置的设置)。main部分设置的指令将影响其他所有设置:server部分的指令主要用于指定主机和端口;upstream指令主要用于负载均衡,设置系列的后端服务器;location部分用于匹配网页位置。
         这四者之间的关系:
         server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
1、        nginx的全局设置
Nginx的全局属性配置,代码如下:
         user                                     nobody nobody;指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
         worker_processes             4;指定了Nginx要开启的进程数。每个Nginx进程平均消耗10M~12M内存。根据经验,一般指定一个进程足够了,如果是多核CPU,建议指定和Cpu的数量(核数)的进程数。
         error_log                             logs/error.log notice;日志输出级别有debug、info、notice、warn、error、crit。
         pid                                         logs/niginx.pid;
         worker_rlimit_nofile        65535 用于绑定worker进程与CPU;
         events {                                           设定Nginx的工作模式及连接数上限。
                   use epoll;
                   worker_connections         65536;
}
use指定nginx的工作模式。nginx支持的工作模式有select,Poll、,kqueue,epoll,rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式。
         worker_connections制定了Nginx每个进程的最大连接数,默认是1024,最大客户端连接数由worker_processes和worker_connections决定,及Max_client=worker_processes*worker_connections,在作为反向代理时,Max_clients变为:
max_clients = worker_processes * worker_connections/4;
         进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit –n 65536”后worker_connections的设置才能生效。
2、        HTTP服务器配置
http {
         include                                conf/mime.types;
         default_type                       application/octet-stream;
         log_format main ‘$remote_addr - $remote_user [$time_local]’
         “’$request” $status.$bytes_sent ’
         “’$http_referer” “$http_user_agent”’
         “’$gzip_ratio”’;
         log_format download ‘$remote_addr - $remote_user [$time_local]’
         “’$request” $status $bytes_sent’
         “’$http_referer” “http_user_agent”’
         “’$http_range” “$sent_http_content_range”’;
client_max_body_size             20m;
client_header_buffer_size       32K;
large_client_header_buffers   4 32K;
Sendfile                                         on;
tcp_nopush                                  on;
tcp_nodelay                                 on;
keepalive_timeout                     60;
client_header_timeout             10;
client_body_timeout                 10;
send_timeout                              10;
}
详细介绍下这段代码中每个配置选项的含义。
         include是main模块指令,实现对配置文件锁包含的文件的设定,可以减少主配置文件的复杂度。
         default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
         log_format对日志格式的设定.HTTPLog模块指令。main为此日志输出格式的名称,可以在下面的access_log指令中引用。
         client_max_body_size用来指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小。这里设置为32K。
         large_client_header_buffers用来指定客户端请求中最大的消息头的缓冲最大数量和大小,“4”为个数,“128K”为大小,最大缓存量为4个128K。
         sendfile参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络堵塞。
         keepalive_timeout设置客户端连接头读取超时时间。如果超过这个时间,服务器会关闭该连接。
         client_header_timeout设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)"错误。
         client_body_timeout设置客户端请求主题读取超时时间。如果超过这个时间,客户端还
没有发送任何数据,Nginx将返回”Request time out(408)”错误,默认值是60.
         send_timeout指定相应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,
如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
3、        HttpGzip模块配置
下面配置Nginx的HttpGzip模块。这个模块支持在线实时压缩输出数据流。要查看
否安装了此模块,需要使用下面的命令:(此结果中没有安装)
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.6.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
configure arguments: --prefix=/usr/local/nginx
         通过nginx -V命令可以查看安装Nginx时的编译选项,由输出可知,我们未安装Http
Gzip模块。(查看如何更改)
HttpGzip模块在nginx配置中的相关属性设置:
         gzip                             on;
         gzip_min_length      1k;
         gzip_buffers              4 16k;
         gzip_http_version  1.1;
         gzip_comp_level      2;
         gzip_types                 text/plain application/x-javascript text/css application/xml;
         gzip_vary                   on;
         gzip用于设置开启或者关闭gzip模块,“gzip on”表示开启GZIP压缩,实时压缩输出数据流。
         gzip_min_length设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大。
         gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
         gzip_http_version用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
         gzip_comp_level用于指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
         gzip_types用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。
         gzip_vary选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2