Nginx.conf配置文件

nginx.conf配置文件相关参数:

user  nginx; #用户
worker_processes  auto; #根据cpu核数配置
worker_cpu_affinity auto; #CPU亲和
worker_rlimit_nofile 65535; #一般不需要这么大

error_log  /var/log/nginx/error.log warn; #错误日志
pid        /var/run/nginx.pid;
include /usr/share/nginx/modules/*.conf; #注意有些需要添加
events {
    use epoll;  #网络io模型
    worker_connections 65535 ;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    charset utf-8; # 统一使用utf-8字符集

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

    access_log  /var/log/nginx/access.log  main; #日志

    sendfile       on;
    tcp_nopush     on;

    keepalive_timeout  120; #请求完成之后还要保持连接时间
    tcp_nodelay on;

    client_body_buffer_size  50M; #客户端请求服务器最大允许大小
    proxy_connect_timeout    240; #设置代理连接超时时间
    proxy_read_timeout       240; #设置从代理服务器读取响应的超时时间
    proxy_send_timeout       240; #设置向代理服务器发送请求的超时时间
    proxy_buffer_size        50M; 
    #设置用于读取从代理服务器接收的响应的第一部分的缓冲区的大小。
    proxy_buffers            4 50M; 
    #设置用于从代理服务器读取响应的缓冲区的数量和大小,用于单个连接
    proxy_busy_buffers_size 50M;
    #设置当启用来自代理服务器的响应缓冲时,
    #限制可能忙于向响应客户端发送响应的缓冲区的总大小,而响应尚未完全读取。
    proxy_temp_file_write_size 50M;
    #设置当启用来自代理服务器的响应缓冲,
    #并且整个响应不适合proxy_buffer_size和proxy_buffers指令设置的缓冲区时,
    #响应的一部分可以保存到临时文件中。 该指令设置临时文件的最大大小, 
    #一次写入临时文件的数据大小由proxy_temp_file_write_size指令设置。
    
    gzip on; #开启gzip
    gzip_min_length  1k;# 
    #设置允许压缩的页面最小字节,建议大于1K
    gzip_buffers     4 16k;
    #以16k为单位,按照原始数据大小以16k为单位的4倍申请内存
    gzip_http_version 1.1;
    #识别http协议的版本,早期浏览器可能不支持gzip自解压,用户会看到乱码
    gzip_comp_level 2;
    #压缩机别,等级1-9 最小的压缩最快 但是消耗cpu
    gzip_types  text/plain application/x-javascript text/css application/xml;
    #匹配压缩类型
    gzip_vary on;
    #启用应答头"Vary: Accept-Encoding"
    
    log_format min #定义日志格式,收集日志信息
        '$remote_addr [$time_local]' 
        '$body_bytes_sent' 
        '$request_time' 
        '$status'  
        '"$request"'
        '"$http_referer"' 
        '"$http_x_forwarded_for"' 
        '$upstream_addr' 
        '$upstream_status' 
        '$upstream_response_time' 
        '$http_user_agent';
    log_format json #定义日志格式,收集日志信息
        '{"@timestamp":"$time_iso8601",' 
        '"slbip":"$remote_addr",' 
        '"clientip":"$http_x_forwarded_for",' 
        '"serverip":"$server_addr",' 
        '"size":$body_bytes_sent,' 
        '"responsetime":$request_time,' 
        '"host":"$host",' 
        '"method":"$request_method",' 
        '"requesturi":"$request_uri",' 
        '"url":"$uri",'  
        '"upstream_addr":"$upstream_addr",' 
        '"upstream_status":"$upstream_status",' 
        '"upstream_cache_status":"$upstream_cache_status",'
        '"upstream_response_time":"$upstream_response_time",' 
        '"appversion":"$HTTP_APP_VERSION",' 
        '"referer":"$http_referer",' 
        '"agent":"$http_user_agent",' 
        '"status":"$status",' 
        '"devicecode":"$HTTP_HA"}';
        
    proxy_temp_path    /data/cache/proxy_temp_dir;
    proxy_cache_path   /data/cache/proxy_cache_dir levels=1:2 keys_zone=cache_one:1024m inactive=1d max_size=10g;
    #添加缓存,proxy_temp_path和proxy_cache_path指定的路径必须在同一分区。
    #levels=1:2 缓存级别、1:2缓存两层目录
    #keys_zone=cache_one 配置keys_zone名称,可自定义,分配1024m大小。
    #max_size=10g 缓存最大10G,inactive=1d 超过1天没被访问将会剔除掉
    #use_temp_path=off 关闭生成temp的缓存,对应proxy_temp_path路径
    
    limit_conn_zone $binary_remote_addr zone=one:100m;
    #解释内容如下:
    #要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:
    #"zone=" 给它一个名字,可以随便叫,这个名字要和server里的配置 limit_conn 一致
    #$binary_remote_addr = 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话。 
    #$binary_remote_addr是限制同一客户端ip地址;

    include /etc/nginx/conf.d/*.conf; 
}

proxy_params 代理配置,有时会缺少此文件。
vim /etc/nginx/proxy_params

proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#上面几行最重要
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
示例

其中日志格式min和json使用方法:

server{
        listen 80;
        server_name test.test.com;
        #access_log  logs/proxy_access.log min; #路径/etc/nginx/log/,也可以自定义日志保存路径
        access_log  logs/proxy_access_js.log json;
        location / {
                index index.html;
                root /data/code;
        }
}

其中nginx缓存使用方法:
在server加入以下代码
设置名称为cache_one,内存缓存空间大小为1G,
30天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。

location / {
        proxy_cache cache_one; #cache_one对应ng配置的keys_zone
        proxy_cache_key $host$uri$is_args$args;
        proxy_set_header Host  $host;
        proxy_set_header X-Forwarded-For  $remote_addr;
        expires  30d;
}

其中limit_conn_zone使用方法:

server{
        listen 80;
        server_name test.test.com;
        root /data/code;
        index index.html;
        location / {
                index index.html;
        }
        location /download/ {
                limit_conn one 1;
                #限制每个IP只能发起1个连接(one 要跟limit_conn_zone 的变量对应)
                limit_rate 50k;
                #是对每个连接限速50k。这里是对连接限速,而不是对IP限速!
                #如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate*2
        }
}

你可能感兴趣的:(Nginx.conf配置文件)