nginx自学之路

一. nginx配置文件介绍:

user nginx;#运行nginx的用户

worker_processes 4;#启动几个worker进程,ps -aux |grep nginx可查看。注:一般和cpu核心数相同,使用grep -c processor /proc/cpuinfo命令查看。

worker_cpu_affinity 0001 0010 0100 1000;  #将4个worker进程分配在4个CPU核心上,充分亲和CPU。

worker_rlimit_nofile 65535;   #一个nginx进程最多打开的文件描述符的数量,应和ulimit -n命令:打开最多文件数量一致。

error_log logs/error.logs  warn;   #生产环境常用warn|error|crit错误日志级别越高,记录的信息越少,配置等较低级别,会带来巨大磁盘I/O消耗。

pid /usr/local/nginx/logs/nginx.pid   #pid进程文件存放目录。

events {

use epoll;   #epoll网络IO多路复用模型没有对描述符的限制,相比select,poll来说比较灵活。多路复用:一个线程内交替并发的处理主动询问的系统IO请求。

accept_mutex on;  #防止惊群现象,默认为on。惊群现象:一个网路连接到来,多个睡眠的进程被叫醒,但只有一个进程能获得链接,这样会影响系统性能。

multi_accept on;    #设置是否允许一个进程处理多个网络链接,默认off。

worker_connections 1024;  #单个worker进程处理的最大并发链接数。nginx最大并发链接总数=worker_processes 乘于 worker_connections。

}

http {

    include mime_types;    #文件默认在conf目录下,根据文件类型来判断如何处理传输给浏览器的文件是打开还是下载。如果没有相对应的扩展名则默认交给default_type处理。

    default_type application/octet-stream; #浏览器访问到未定义的扩展名时,就默认为下载该文件。设置改成default_type text/html;告诉浏览器把所有未设置的扩展名当HTML文件打开。

    log_format zclwudi '$remote_add - $remote_user [$itme_local] "request" '         注:zclwudi为日志格式调用名。

                               '$status $body_bytes_sent "$http_referer" "$request_time" '

                               ' "$http_user_agent" "$http_x_forwarded_for" "$request_time" "$content_type" '

                               ' "$request_body" '; 

#nginx日志变量介绍:

#$remote_add和$http_x_forwarded_for:记录客户端的ip地址。    $remote_user:记录客户端用户名。   $itme_local:记录访问时间。 $request:记录请求的URL   

# $status:记录nginx返回给客户端的状态码。 $http_referer:记录是从哪个网页链接访问过来的。    $request_time:请求处理时间。   $http_user_agent:记录客户端浏览器的信息。

#body_bytes_sent:发送给客户端的主体字节数。

     server_tokens off;  #隐藏版本号

     sendfile on;            #开启高效文件传输模式,nginx调用sendfile函数来传输文件。注:若图片显示不正常时改为off。

     tcp_nopush on;     # 开启sendfile模式时才生效,防止网络阻塞,减少了网络报文段的数量,将响应头和正文合在一个报文段发送。而不是一个一个发送。

     tcp_nodelay on;    #开启sendfile模式时才生效,防止网络阻塞告诉nginx不要缓存数据。

     keepalive_timeout 30;    #客户端链接超时时间,

#gzip压缩文件:

     gzip on;    #开启gzip压缩功能。

     gzip_buffers 32 4k;    #在内存中存储压缩文件32块每块4k。最后一块一块的传输给浏览器。

     gzip_comp_level 6;   #压缩级别分为为0-9,级别越高压缩功能越强,同时也会消耗cpu的资源。建议折中6级别。

     gzip_min_length 200k;    #小于200k的文件不压缩,太小的文件压缩没有意义啊,反而还耗费CPU的资源。

     gzip_types text/css text/xml application/javascript;    #压缩哪些类型的文件。默认就压缩text/html所以不用写,可以在mime.types文件中查看所有的压缩文件。

     gzip_vary on;    #告诉浏览器我的文件是压缩过的。nginx在header头部中加入VARY标签。

#limit限制:

    limit_req_zone $binary_remote_addr zone=test:10m rate=1r/s;    #http中配置,单个ip发送过来的请求,nginx每秒只处理一个请求。 zone:起一个区块名字,占用10m空间大小。

    limit_req zone=test burst=5 nodelay;    #location中配置,burst:表示可缓冲5个请求,第一次最多1秒处理6个请求,nodelay:表示立即处理缓冲中的请求,如果不设置则burst不生效。

    limit_conn_zone $binary_remote_addr zone=addr:10m;    #http中配置,$binary_remote_addr是$remote_addr的二进制格式,固定占用4个字节,而$remote_addr按照字符串存储,占用7-15个字节。

    limit_conn addr 50;    #location中配置,限制同一时间内允许50个并发连接数,超出的连接返回503。

    limit_rate_after 3m;#http中配置,限速模块,前3M下载时不限速
    limit_rate 512k; #http中配置,限速为每秒512KB。注:这里是对每个连接限速,而不是对ip限速,如果一个ip有两个并发链接,那么这个ip就限速为limit_rate * 2。

     

     server_names_hash_bucket_size 128;    #设置存储服务器名字的hash表大小。

     

}

猜你喜欢

转载自www.cnblogs.com/zcl-python/p/10396125.html