Nginx的配置文件nginx.conf存放在nginx的安装目录的conf下,整个配置文件是以block的形式组织的。整个配置文件中Main命令位于最高层,在Main层下面可以有Event、HTTP等级层,而在HTTP层中又包含server层,即server block,server block中又可分为location层,并且一个server block中可以包含多个location block。
Nginx配置文件主要分成四个部分:main(全局设置)、server(主机设置)、upstream(负载均衡设置)和location(URL匹配特定位置的设置)。main部分设置的命令将影响其他所有设置;server部分的命令只要用于指定主机和端口;upstream命令主要勇于负载均衡,设置一系列的后端服务器;location部分用于匹配网页位置。这死者之间的关系形式:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
下面这段是全局属性配置
//user指定nginx的worker进程运行的用户及用户组,默认是nobody账号运行 user nobody nobody; //指定nginx开启的进程数 worker_processes 2; //定义全局日志错误日志文件,日志输出级别有debug、info、notice、warn、error、crit可供选择 error_log /usr/local/nginx/logs/nginx_error.log crit; //指定进程id的存储文件位置 pid /usr/local/nginx/logs/nginx.pid; //用于绑定worker进程和cpu,Linux内核2.4以上可用 worker_rlimit_nofile 51200; //设定nginx的工作模式及连接上限 //use指定nginx的工作模式,nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll //其中select和poll都是标准工作模式,kqueue和epoll是高效的工作模式,对于linux系统,epoll是首选 //worker_connections用于定义nginx每个进程的最大连接数,默认是1024。最大连接数由 worker_processes //和worker_connections决定,即max_client=worker_processes*worker_connections //进程的最大连接数受linux系统进程的最大打开文件数限制,在执行操作系统命令"ulimit -n 65536" //后worker_connections的设置才能生效 events { use epoll; worker_connections 6000; }
下面这段是nginx对HTTP服务器相关属性配置:
http { //include主模块命令,实现对配置文件所包含文件的设定,可以减少配置文件的复杂度。类似于apache中的include方法 include mime.types; //default_type属于HTTP核心模块命令,这里设定默认的二进制流,也就是访当文件类型未定义 //时使用这种方式,例如,在没有配置php环境时,nginx是不予解析的,此时,用浏览器访问 //php文件就是出现下载窗口 default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; //log_format指定日志输出格式,combined_realip为日志输出名称 log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; //用于设定允许客户端请求的最大的单个文件字节数 client_max_body_size 10m; //用于指定客户端请求头的headerbuffer大小。对于大多数请求,1KB的缓冲区大小已经足够, //如果自定义了消息头或有更大的cookie,可以增加缓冲区大小 client_header_buffer_size 1k; client_body_buffer_size 256k; //用于指定客户端请求中较大的消息头的缓存最大数量和大小,4位个数,128K大小,最大缓存 //为4个128K large_client_header_buffers 8 4k; //用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay另个命令设置为on用于放置网络阻塞 sendfile on; tcp_nopush on; tcp_nodelay on; //设置客户端连接保持活动的超时时间。超过这个时间后,服务器会关闭该连接 keepalive_timeout 10; //设置客户端请求头读取超时时间,如果超过这个时间,客户端还没有发送任何数据,nginx //将返回“Request time out(408)”错误 client_header_timeout 10; //设置客户端请求主题读取超时时间,如果超过这个时间,客户端还没有发送任何数据,nginx //将返回“Request time out(408)”错误,默认值是60 client_body_timeout 10; //指定相应客户端的超时时间,这个超时仅限于两个连接活动之间的时间,如果超过这个时间, //客户端没有任何活动,nginx将会关闭连接 send_timeout 10; connection_pool_size 256; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxy_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on;
下面这段是HTTPGzip模块在nginx配置中的相关属性设置:
//用于设置开启或者关闭gzip模块 gzip on; //设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值 //是0,不管页面多大都进行压缩。建议设置成大于1KB的字节数,小于1KB可能会越压缩越大 gzip_min_length 1k; //表示申请4个单位16KB的内存作为压缩结果流缓存,默认申请是与原始数据大小相同的内存 //空间Kauai存储gzip压缩结果 gzip_buffers 4 16k; //设置识别http协议版本,默认是1.1 gzip_http_version 1.1; //指定压缩比例,1表示压缩比最小,处理速度最快,9表示压缩比最大,传输速度最快,但处 //速度最慢,也比较消耗内存 gzip_comp_level 2; //指定压缩的类型,无论是否指定,“text/html”类型总会被压缩的 gzip_types text/plain application/x-javascript text/css text/htm application/xml; //让前端的缓存服务器缓存经过gzip压缩的页面,例如用squid缓存经过的nginx压缩的数量 gzip_vary on;
下面这段是虚拟主机的配置:
//定义虚拟主机开始的关键字 server { //指定虚拟主机的服务端口 listen 80; //用于指定ip地址或者域名,多个域名之间用空格分开 server_name 192.168.8.10 //设定访问的默认首页地址 index index.html index.htm index.php index.jsp; //指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径 root /usr/local/nginx/html/test; //设置网页的默认编码格式 charset gb2313; //指定虚拟主机的访问日志存放路径,最后的main指定访问日志的输出格式 access_log logs/www.test.com.log main;
转载于:https://blog.51cto.com/thankinglove/1792216