您的位置:首页 > 运维架构 > Nginx

Nginx.conf配置说明

2017-10-26 11:44 323 查看
#使用的用户和组
user www www;
#指定工作衍生进程数(一般等于CPU的总核数或总核数两倍)
worker_processes  1;
#错误日志的存放目录,日志级别有dubug,info,notice,warn,error,crit
error_log   logs/error.log;
error_log   logs/error.log info;
error_log   logs/error.log notice;
#指定pid存放路径
/usr/local/nginx/logs/nginx.pid;
#指定文件描述符数量,如果不设的话上限就是系统的ulimit –n的数字,一般设置woker_connections的3-4倍
worker_rlimit_nofile 51200;

events {
#使用的网络I/O模型,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kqueue模型
use epoll;
#允许的连接数
worker_connections  1024;
#默认是on。设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态。
#设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,知道连接分配完毕,没有取得连接的继续休眠。
#当你的服务器连接数不多时,开启这个参数会让负载有一定程度的降低。但是当服务器的吞吐量很大时,为了效率,请关闭这个参数。
multi_accept on;
}

http {
include       mime.types;
default_type  application/octet-stream;
#设置使用字符集
charset gb2312;
#保存服务器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制,减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能如果 hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大 hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小
server_name_hash_bucket_size 128;
#Nginx在处理请求时,先根据client_header_buffer_size配置的值分配一个buffer,如果分配的buffer无法容纳 request_line/request_header,那么就会再次根据large_client_header_buffers配置的参数分配large_buffer,如果large_buffer还是无法容纳,那么就会返回414(处理request_line)/400(处理request_header)错误;如果你的请求中的header都很大,那么应该使用client_header_buffer_size,这样能减少一次内存分配,如果你的请求中只有少量请求header很大,那么应该使用large_client_header_buffers,因为这样就仅需在处理大header时才会分配更多的空间,从而减少无谓的内存空间浪费
client_header_buffer_size 32k;
large_client_header_buffers 2 32K;
#设置客户端能上传的文件大小
client_max_body_size 10m;
#指定是否使用OS的sendfile函数来传输文件,普通应用应该设为on,下载等IO重负荷的应用应该设为off。默认值是off
sendfile on;
#sendfile为on时这里也应该设为on,数据包会累积一下再一起传输,可以提高一些传输效率。
tcp_nopush on;
#HTTP连接的持续时间。设的太长会使无用的线程变的太多。
#设成0关闭此功能。
#默认为75
keepalive_timeout 75;
#小的数据包不等待直接传输。默认为on,看上去是和tcp_nopush相反的功能,但是两边都为on时nginx也可以平衡这两个功能的使用
tcp_nodelay on;
#FastCGI相关参数超时时间的设置是为了改善网站的性能:减少资源占用,提高访问速度(单位默认是s)
fastcgi_connect_timeout 300;
#指nginx进程向fastcgi进程发送request的整个过程的超时时间
fastcgi_send_timeout 300;
#指fastcgi进程向nginx进程发送response的整个过程的超时时间
fastcgi_read_timeout 300;
#fastcgi_buffers指令指定的缓冲区大小
fastcgi_buffer_size 64k;
#fastcgi_buffers指令指定的缓冲区大小
fastcgi_buffers 16 16k;
##建议为fastcgi_buffers的两倍
fastcgi_busy_buffers_size 128k;
#在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,设置上述数值设置太小时若负载上来时可能报502 Bad Gateway
fastcgi_temp_file_write_size 128k;
#开启FastCGI缓存并且为其制定一个名称,有效降低CPU负载,并且防止502错误
fastcgi_cache dingtm
##指定应答代码缓存时间为1小时
fastcgi_cache_valid 200 302 1h;
#1天
  fastcgi_cache_valid 301 1d;
#1分钟
  fastcgi_cache_valid any 1m;
#缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数
  fastcgi_cache_min_uses 1;
#打开GZIP压缩,实时压缩输出数据流
#gzip on;
#从Content-Length中数值获取验证,小于1K会越压越大
#gzip_min_length  1k;
#以16K为单位4倍的申请内存做压缩结果流缓存
gzip_buffers  4 16k;
gzip_http_version 1.1;
#压缩比率1-9,1压缩比最小处理速度最快,9压缩比最大但处理最慢且耗CPU
gzip_comp_level 3;
#压缩类型
gzip_types text/plain application/x-javascript text/css application/xml;
#跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary on;
#设置Nginx访问日志格式
# $remote_addr与$http_x_forwarded_for记录客户端IP,$remote_user:记录客户端用户名称,$time_local:访问时间与时区
# $request:记录请求的URL与http协议,$status:记录请求状态,$body_bytes_sent:记录发送给客户端主体文件的大小
# $http_referer:记录从哪个页面链接访问过来的,$http_user_agent:记录客户端浏览器相关信息
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#配置虚拟机
server {
#默认监听端口
listen       8090;
#域名
server_name  www.swk.com;
#首页排序
index index.html index.htm index.php
#站点根目录,即网站程序存放目录
root /data/project
#错误页面
error_page 500 502 404 /error.html
#伪静态,将www.swk.com/list...html的文件转发到index.php
#rewrite ^/list-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /index.php?m=content&c=index&a=lists&catid=$1&types=$2&country=$3&language=$4&age=$5&startDate=$6&typeLetter=$7&type=$8&page=$9 last;
#location标签,根目录下的.svn目录禁止访问
location ~ /.svn/{
deny all;
}
location / {
root   html;
index  index.html index.htm;
}

#将符合js/css的文件等设定expires缓存参数要求浏览器缓存
location~ .*\.(js|css)?${
expires 30d;
}

location ~ ^/list{
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
#对不同的http状态码设置不同的缓存时间
proxy_cache_valid 200 301 302 304 1d;
#proxy_cache_valid any 1d;
#以域名、URI、参数组合成web缓存的key,Nginx根据key哈希,存储缓存内容到二级缓存目录
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header x-Forwarded-For $remote_addr;
proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
#proxy_ignore_headers Set-Cookie;
#proxy_hide_header Set-Cookie;
proxy_pass http://backend_server; add_header Nginx-Cache "$upstream_cache_status from km";
expires      1d;
}
access_log  /data/logs/swk.com.log access;    #nginx访问日志
}

upstream bakend{
server 127.0.0.1:8027;
server 127.0.0.1:8028;
server 127.0.0.1:8029;
hash $request_uri;
}
#支持的负载均衡策略
#1、轮询(默认)
#每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
#2、Weight
#指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
#upstream bakend {
#   server 192.168.0.14 weight=10;
#   server 192.168.0.15 weight=10;
#}
#3、ip_hash
#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
#upstream bakend {
#   ip_hash;
#   server 192.168.0.14:88;
#   server 192.168.0.15:80;
#}
#4、fair(第三方)
#按后端服务器的响应时间来分配请求,响应时间短的优先分配。
#upstream backend {
#   server server1;
#   server server2;
#   fair;
#}
#5、url_hash(第三方)
#按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
#例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
#upstream backend {
#   server squid1:3128;
#   server squid2:3128;
#   hash $request_uri;
#   hash_method crc32;
#}
#upstream bakend{#定义负载均衡设备的Ip及设备状态}{
#   ip_hash;
#   server 127.0.0.1:9090 down;
#   server 127.0.0.1:8080 weight=2;
#   server 127.0.0.1:6060;
#   server 127.0.0.1:7070 backup;
#}
#每个设备的状态设置为:
#1.down表示单前的server暂时不参与负载
#2.weight为weight越大,负载的权重就越大。
#3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
#4.fail_timeout:max_fails次失败后,暂停的时间。
#5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: