美文网首页
Nginx配置文件

Nginx配置文件

作者: greedycr7 | 来源:发表于2020-10-13 14:20 被阅读0次

    1.配置文件结构

    从整体结构上看,Nginx的配置文件主要由main、events、http、server、location五个模块组成。其中,server块嵌套在http块内,location块嵌套在server块内,对于嵌套块中的指令,其执行顺序为从外至内。

    main
    events {...}
    http {
        server {
            location {...}
        }
    }
    
    模块 说明
    main 用来配置Nginx工作进程所属的用户和用户组、工作进程数量、错误日志位置与级别、pid位置、工作进程的优先级等
    events 用来配置Nginx的工作模式和并发量
    http 用来配置Nginx处理http请求
    server 用来配置Nginx中的虚拟主机
    location 用来做模式匹配,可以根据用户请求的URI来执行不同的操作

    1.1 main模块

    指令详解:
    # 工作进程所属用户
    user  www-data;
    # 工作进程数量,一般为CPU核数或者CPU核数的2倍
    worker_processes  4;
    # 主进程pid的存储位置
    pid  /run/nginx.pid;
    

    1.2 events模块

    指令详解:
    events {
        # 设置事件模型,epoll是多路复用中的一种方式,仅用于Linux2.6以上的内核
        use  epoll;
        # 单个工作进程的最大并发连接数,与服务器内存大小有关。
        worker_connections  1024;
        # 该配置项使得工作进程在获得新连接通知时,立即接受所有连接,放入监听队列
        multi_accept on;
    }
    

    1.3 http模块

    http模块可以包含多个server模块,server模块又可以包含多个location模块!除了server模块和location模块外,还包含http全局块,用来配置Nginx日志、超时控制、反向代理等。

    http全局块指令详解:
    http {
        # mime.types文件是MIME文件类型和文件扩展名的映射。在Nginx返回的响应报文中,
        # 通过Content-type字段告知浏览器返回的文件类型,而浏览器就可以调用相应的应用
        # 程序为用户展示数据。
        include  mime.types;
        # Nginx默认返回的文件类型
        default_type  application/octet-stream;
        # 开启高效的文件传输模式(暂时还不理解这个配置)
        sendfile on;
        
        #+++++++++#
        #+日志配置+#
        #+++++++++#
        # 设定日志格式
        log_format  main
        '[$time_local] $remote_addr - $remote_user '
        '"$request" $request_length $request_time $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent"';
        # 设置Nginx访问日志
        access_log  /data/nginx/logs/nginx_access.log  main;
        # 设置Nginx错误日志
        error_log  /data/nginx/logs/nginx_error.log;
    
        #+++++++++#
        #+超时控制+#
        #+++++++++#
        # 设置长连接的保持时间,相当于保活定时器,Nginx默认为75s,一般可设为60s,
        # 若设为0,则禁止长连接。
        keepalived_timeout  60;
        # 客户端与服务端建立连接后,客户端发送完整的请求头的超时时间,会受请求头长度和
        # 网络状况的影响。Nginx默认为60s,若指定时间内,客户端未发送完请求头,则Nginx
        # 返回408错误,即Request Time Out 。
        client_header_timeout  10;
        # 客户端与服务端建立连接后,客户端发送请求体的超时时间,会受请求体长度和网络状况
        # 的影响,在文件上传服务中,可能需要将此参数的值调大。Nginx默认为60s,若指定时间
        # 内,客户端未发送完请求体,则Nginx返回408错误。
        client_body_timeout  20;
    
        #+++++++++++++++++++++#
        #+请求头、请求体大小限制+#
        #+++++++++++++++++++++#
        # client_header_buffer_size指令用来分配一个buffer来容纳客户端的请求行和请求头,默认
        # 为1k;large_client_header_buffers 指令用来规定容纳客户端请求行和请求头的最大buffer
        # 数量和大小,默认最大数量为4个,大小为4k。
        # Nginx首先根据client_header_buffer_size配置的值来分配buffer,如果buffer过小,那么再
        # 次根据large_client_header_buffers 配置的值来分配large_buffer,如果large_buffer还是过
        # 小,则返回414错误(Request-URI Too Large)或者400错误(Bad Request)。
        client_header_buffer_size  1k;
        large_client_header_buffers  4 4k;
        # client_body_buffer_size指令用来配置请求体缓冲区的大小,默认为32k;
        # client_max_body_size指令用来配置请求体缓冲区的最大值,默认为1m;对于文件上传服
        # 务器来说,client_max_body_size的配置十分重要。
        client_body_buffer_size 32k;
        client_max_body_size 1m;
    
        #+++++++++#
        #+Gzip压缩+#
        #+++++++++#
        # Gzip是页面压缩技术,其作用是对服务端返回的页面进行压缩,以减小页面的体积,提高
        # 浏览器对页面的加载速率。一般情况下,对于js、css、jpg、jepg、png、gif这样的静
        # 态文件需要开启Gzip压缩技术。
        # 开启gzip压缩
        gzip on;
        # 设置允许压缩的页面的最小字节数,默认为1k;页面大小可以从响应头的Content-Length
        # 中获取。
        gzip_min_length  1k;
        # 配置压缩页面的缓冲区数量以及单个缓冲区的大小,默认为内存的一个页的大小。
        gzip_buffers 4 4k;
        # 允许Gzip压缩的文件类型
        gzip_types text/plain application/javascript text/css image/jpeg image/png image/gif;
        # 压缩级别,取值范围[1-9],默认为1,一般设为4或4;其值越大,压缩率越大,但是
        # 消耗的CPU时间越长。
        gzip_comp_level  4;
        # 指定允许的HTTP版本号,默认为1.1
         gzip_http_version 1.1;
    }
    

    日志格式参数说明:

    参数 说明 示例
    $time_local 本地时间和时区 18/Jul/2012:17:00:01 +0800
    $remote_addr 客户端IP地址 211.71.72.69
    $remote_user 客户端名称 -
    $request 请求方式、请求的URI、HTTP协议版本 "GET /article-10000.html HTTP/1.1"
    $request_length 请求的长度,包括行、头、体
    $request_time 请求处理时间,单位s,指从读取客户端第一个字节开始,直到将最后一个字节内容返回给客户端
    $status 服务端返回的状态码 200
    $body_bytes_sent 服务端返回的内容大小,不包括响应行、响应头,单位字节 1547
    $http_referer URL跳转来源 https://www.baidu.com/
    $http_user_agent 客户端浏览器信息 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;"

    相关文章

      网友评论

          本文标题:Nginx配置文件

          本文链接:https://www.haomeiwen.com/subject/pbhknftx.html