Nginx-配置一

参考:http://ixdba.blog.51cto.com/2895551/790611
并加上自己的理解.以实际配置的形式来讲解.
把main,events主配置放到/etc/nginx/nginx.conf主配置文件中,
把http,server,location,upstream等配置单独出来.

main events配置

/etc/nginx/nginx.conf

user nginx;
#user是个主模块指令,指定nginx worker进程运行用户及用户组,默认则nobody账号运行.
worker_processes 1;
#worker_processes是个主模块指令,指定了nginx要开启的进程数,每个nginx进程平均耗费10-12M内存.根据经验,指定1个就够了.如果
是多核CPU,可指定和CPU核数相同的进程数.


#error_log /var/log/nginx/error.log warn;
error_log /var/log/nginx/error.log debug;
#用来定义全局错误日志,日志输出级别有debug,info,notice,warn,error,crit可供选择,其中,debug输出日志最为详细.而crit输出日
志最少.
pid /var/run/nginx.pid;
#是模拟指令,用来指定进程ID的存储位置.

worker_rlimit_nofile 65535;
#用于指定一个进程可以打开的最多文件数目,这里是65535,需要使用命令ulimit -n 65535来设置.

events {
#events指令是设定nginx的工作模式及连接上限.
use epoll;
#use是个事件模块指令,用来指定nginx的工作模式,有select,poll(这两个是标准模式),kqueue,epoll(这两个是高效模式,epoll用在linux平台上,而kqueue用在BSD系统中),rtsig,/dev/poll
worker_connections 1024;
#也是个事件指令,用于定义nginx每个进程的最大连接数,默认是1024.最大客户端连接数由worker_processesworker_connections决定
,即Max_client=worker_processes*worker_connections,在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connectio设置才能生效。

}
include /etc/nginx/http.conf;
#载入httpd.conf文件

下面是http的设置.

vi /etc/nginx/http.conf

http {
#fastcgi_intercept_errors on;
#有些地方说这里要开启错误页面的重定义,error_page 403 404 /40x.html;才会生效.

include /etc/nginx/mime.types;
#实现对对配置文件所包含的文件的设定,可以减少主配置文件的复杂度.
default_type application/octet-stream;
#default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。


##########access log setup#######

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';

#$remote_addr$http_x_forwarded_for用以记录客户端的ip地址;
#$remote_user:用来记录客户端用户名称;
#$time_local: 用来记录访问时间与时区;
#}$request: 用来记录请求的urlhttp协议;
#$status: 用来记录请求状态;成功是200
#$body_bytes_s ent :记录发送给客户端文件主体内容大小;
#$http_referer:用来记录从那个页面链接访问过来的;
#$http_user_agent:记录客户毒啊浏览器的相关信息;
#通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理#服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端#的IP地址和原来客户端的请求的服务器地址;
#log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。
#log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。

access_log /var/log/nginx/access.log main;

#################################

######################缓冲设置##################

client_header_timeout 10;
#client_header_timeout设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误。

client_body_timeout 10;
#client_body_timeout设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60。

client_max_body_size 20m;
#client_max_body_size用来设置允许客户端请求的最大的单个文件字节数。

client_header_buffer_size 32K;
#client_header_buffer_size用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K。

large_client_header_buffers 4 128k;
#large_client_header_buffers用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个128K.

open_file_cache max=65535 inactive=60s;
#这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 80s;
#这个是指多长时间检查一次缓存的有效信息.
#open_file_cache_min_users 1;
#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

#####################################################

#############设置连接超时时间########################

sendfile on;
tcp_nopush on;
tcp_nodelay on;
#sendfile参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
keepalive_timeout 65;
#keepalive_timeout设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
send_timeout 10;
#send_timeout指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。

#####################################################

#######################gzip setup######
#HttpGzip模块配置。这个模块支持在线实时压缩输出数据流。要查看是否安装了此模块,需要使用nginx -V命令查看

gzip on;
#gzip用于设置开启或者关闭gzip模块,“gzip on”表示开启GZIP压缩,实时压缩输出数据流。
gzip_min_length 1k;
#gzip_min_length设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大。
gzip_buffers 4 16k;
#gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_http_version 1.1;
#gzip_http_version用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
gzip_comp_level 2;
#gzip_comp_level用来指定GZIP压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
gzip_types text/plain application/x-javascript text/css application/xml;
#gzip_types用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。
gzip_vary on;
#gzip_vary选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。

##########################################

###################载入server配置文件##################
include /etc/nginx/conf.d/www.a.com.conf;
#这里指定一个host.conf文件来配置虚拟主机,便于维护
#####################################################
}

server配置

这里的配置比较多,见下一节.http://bfe99.blog.51cto.com/blog/1072496/1122911

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章