nginx配置文件详解

#nginx用户及用户组

user www-data www-data; 

#工作进程一般等于cpu核心数

worker_processes auto;

# nginx默认是没有开启利用多核cpu的配置的。需要通过增加worker_cpu_affinity配置参数来充分利用多核cpu,cpu是任务处理,当计算最费时的资源的时候,cpu核使用上的越多,性能就越好。

worker_cpu_affinity auto;

#错误日志存放路径

error_log /data/logs/nginx_logs/error.log ;

#pid存放路径

pid logs/nginx.pid;

#指定进程可以打开的最大描述符:数目。

worker_rlimit_nofile 51200;

events {

    use epoll;

#使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。

    worker_connections 51200;

#每个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。worker_processes*worker_connections

    multi_accept on;

# 告诉nginx收到一个新连接通知后接受尽可能多的连接。

}

http {

    include mime.types;

# 只是一个在当前文件中包含另一个文件内容的指令。这里我们使用它来加载稍后会用到的一系列的MIME类型。

    default_type application/octet-stream;

# 设置文件使用的默认的MIME-type。

    log_format main  '$proxy_add_x_forwarded_for  - [$time_local] "$http_host" "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                     '"$request_time" "$upstream_response_time" "$upstream_addr" "$http_user_agent" ';

# 设置日志格式

    sendfile on;

# 指定是否使用sendfile系统调用来传输文件。

# sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。

    tcp_nopush on;

# 是要等数据包累积到一定大小才发送

    underscores_in_headers on;

# nginx引用header变量时使用带下划线的变量

    keepalive_timeout 120;

# 指定每个 TCP 连接最多可以保持多长时间。

    server_tokens off;

#隐藏版本号

    tcp_nodelay on;

#禁用了Nagle 算法

    proxy_read_timeout 1800;

# 连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)

    #fastcgi_connect_timeout 300;

#指定nginx与后端fastcgi server连接超时时间

    #fastcgi_send_timeout 300;

#指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)

    #fastcgi_read_timeout 300;

#指定nginx接受后端fastcgi响应请求超时时间 (指已完成两次握手后nginx接受fastcgi响应请求超时时间)

    #fastcgi_buffer_size 64k;

#指定nginx读取fastcgi响应第一部分需要用多大的缓冲区,这个值表示将使用一个64kb的缓冲区响应第一部分应答(应答头)可以设置为fastcgi_buffers缓存区大小

    #fastcgi_buffers 4 64k;

#指nginx需要用多大的缓冲区缓冲fastcgi的应答请求(整个应答),如果一个php脚本所产生的页面大小为256kb,那么会分配4个64kb缓冲区来缓存,如果页面大于256kb,那么大于256kb的部分会缓存到fastcgi_temp指定的路径中,但是因为内存中数据处理远快于磁盘, 所以这个值应该为站点中php所产生的页面大小的中间值, 如果站点大部分php脚本产生的页面为:256kb, 那么可以设置成成"8 16k  4 64k"

    #fastcgi_busy_buffers_size 128k;

#整个数据请求需要多大的缓存区,建议设置为fastcgi_buffers值的两倍

    #fastcgi_temp_file_write_size 128k;

#写入缓存文件使用多大的数据块,默认值是fastcgi_buffer值的2倍

    #fastcgi_intercept_errors on;

#这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。

    #add_header Access-Control-Allow-Origin *;

#服务器默认是不被允许跨域的。给Nginx服务器配置`Access-Control-Allow-Origin *`后,表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求。

    #Gzip Compression

    gzip on;

#开启gzip压缩功能

    gzip_buffers 16 8k;

#设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间,param2:int(k) 后面单位是k。这里设置以8k为单位,按照原始数据大小以8k为单位的16    申请内存

    gzip_comp_level 6;

#设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大;等级1-9,最小的压缩最快 但是消耗cpu

    gzip_http_version 1.1;

#识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码

    gzip_min_length 256;

#设置允许压缩的页面最小字节(从header头的Content-Length中获取) ,当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。建议大于1k

    gzip_proxied any;

#nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),

no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含"Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)

    gzip_vary on;

#启用应答头"Vary: Accept-Encoding"

    gzip_types

        text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml

        text/javascript application/javascript application/x-javascript

        text/x-json application/json application/x-web-app-manifest+json

        text/css text/plain text/x-component

        font/opentype application/x-font-ttf application/vnd.ms-fontobject

        image/x-icon;

#制定压缩的类型,线上配置时尽可能配置多的压缩类型!    

    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

#配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)

    proxy_request_buffering off;

#可以使得Nginx及时没有读取完client body的时候,也能立刻连接upstream。换句话说,Nginx来了收到client的Header,就往upstream 连接并且发送。并且,来了部分的body,也会立刻转发到upstream,即所谓的流式上传。

    proxy_max_temp_file_size 0;

# 指定当响应内容大于proxy_buffers指定的缓冲区时, 写入硬盘的临时文件的大小. 如果超过了这个值, Nginx将与Proxy服务器同步的传递内容, 而不再缓冲到硬盘. 设置为0时, 则直接关闭硬盘缓冲.

    add_header X-Frame-Options ALLOWALL;

#X-Frame-Options头主要是为了防止站点被别人劫持、iframe引入 ( ALLOWALL; #允许所有域名iframe,      DENY; #不允许任何域名iframe,包括相同的域名     SANEORIGIN; #允许相同域名iframe,如a.test.com允许b.test.com      ALLOW-FROM uri; #允许指定域名iframe,)

    server_names_hash_bucket_size 128;

# hash表可保存服务器名字的数量(32的倍数)

    client_header_buffer_size 32k;

#设置nginx允许接收的客户端请求内容的最大值,及客户端请求Header头信息中设置的Content-Lenth大最大值。如果超出该指令设置的最大值,nginx将返回“Request Entity Too Large”的错误信息(HTTP的413错误码)

    large_client_header_buffers 4 32k;

#设置nginx读取客户端请求Header头信息的超时时间,如果超过该指令设置的时间,nginx将返回"Requet time out"错误信息(HTTP的408错误码)

    client_max_body_size 1024m;

#设置客户端请求的Header头缓冲区大小,默认为4K。客户端请求行不能超过设置的第一个数,请求的Header头信息不能大于设置的第二个数,否则会报"Request URI too large"(414)或“Bad request”(400)错误。如果客户端的Cookie信息较大,则需增加缓冲区大小

    client_body_buffer_size 10m;

#这个directive设定了request body的缓冲大小。如果body超过了缓冲的大小,那么整个body或者部分body将被写入一个临时文件。如果Nginx被设置成使用文件缓冲而不使用内存缓冲,那么这个dirctive就无效。client_body_buffer_size在32位系统上默认是8k,在64位系统上默认是16k。可以在http, server 和 location模块中指定

    #If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.

    open_file_cache max=1000 inactive=20s;

#缓存文件描述符的元数据,如大小,修改时间,权限等等。缓存清理使用LRU算法。

    open_file_cache_valid 30s;

#检验缓存中元素有效性的频率;默认为60s。

    open_file_cache_min_uses 2;

#NGINX将在非活动时间段之后从高速缓存中清除元素。在非活动时长访问的次数超过了指定次数,则不淘汰;否则淘汰。

    open_file_cache_errors on;

  #NGINX可以缓存在文件访问期间发生的错误。

    vhost_traffic_status_zone;

#nginx流量监控模块

    #client_max_body_size 100m;

########################## default ############################

    server {

        listen 8099;

        server_name _;

        root html;

        index index.html index.htm;

    access_log off;

        location /nginx_status {

            stub_status on;

            access_log off;

            allow 127.0.0.1;

            allow 10.10.11.0/24;

            allow 172.16.0.0/22;

            allow 221.224.214.35;

            deny all;

        }

        location /bztvts {

            auth_basic "Restricted";

            auth_basic_user_file nginx.auth;

            vhost_traffic_status_display;

            vhost_traffic_status_display_format html;

            access_log off;

        }

        location /goaccess {

            alias /home/wwwlog/awstats;

            autoindex on;

        }

        location /goaccess.monthly {

            alias /data/wwwlog/awstats;

            autoindex on;

        }

        location /status {

            check_status;

            access_log   off;

            allow 10.1.168.0/24;

            allow 172.16.0.0/22;

            allow 221.224.214.35;

            allow 114.118.1.66;

        allow 114.118.2.3;

            deny all;

        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {

            expires 30d;

            access_log off;

        }

        location ~ .*\.(js|css)?$ {

            expires 7d;

            access_log off;

        }

        location ~ /\.ht {

          deny all;

        }

    }

    

############################ vhost #############################

    include vhost.d/*.conf;

}

你可能感兴趣的:(nginx配置文件详解)