• nginx核心板块来构建静态服务器三


    文件操作的优化

    sendfile系统调用
    语法: sendfile on|off;
    默认: sendfile off;
    配置块: http server location
    以启用 Linux 上的 sendfile 系统调用来发送文件,它减少了内核态与用户态之间的两次
    内存复制,这样就会从磁盘中读取文件后直接在内核态发送到网卡设备,提高了发送文件的
    效率

     AIO系统调用

    1. 语法: aio on|off;
    2. 默认: aio off;
    3. 配置块: http、server、location
    此配置项表示是否在 FreeBSD Linux 系统上启用内核级别的异步文件 I/O 功能。注意,
    它与 sendfile 功能是互斥的

    directio

    1. 语法: directio size|off;
    2. 默认: directio off;
    3. 配置块: http、server、location
    此配置项在 FreeBSD Linux 系统上使用 O_DIRECT 选项去读取文件,缓冲区大小为 size
    通常对大文件的读取速度有优化作用。注意,它与 sendfile 功能是互斥的。

    directio_alignment

    1. 语法: directio_alignment size;
    2. 默认: directio_alignment 512;
    3. 配置块: http、server、location
    它与 directio 配合使用,指定以 directio 方式读取文件时的对齐方式。一般情况下, 512B
    已经足够了,但针对一些高性能文件系统,如 Linux 下的 XFS 文件系统,可能需要设置到 4KB
    作为对齐方式

    打开文件缓存

    1. 语法: open_file_cache max=N[inactive=time]|off;
    2. 默认: open_file_cache off;
    3. 配置块: http、server、location
    文件缓存会在内存中存储以下 3 种信息:
    文件句柄、文件大小和上次修改时间。
    ·已经打开过的目录结构。
    ·没有找到的或者没有权限操作的文件信息
    该配置项后面跟 3 种参数:
    ·max:表示在内存中存储元素的最大个数。当达到最大限制数量后,将采用
    LRU(Least Recently Used)算法从缓存中淘汰最近最少使用的元素。
    inactive:表示在inactive指定的时间段内没有被访问过的元素将会被淘汰。默认时间为
    60秒。
    ·off:关闭缓存功能

    是否缓存打开文件错误的信息

    1. 语法: open_file_cache_errors on|off;
    2. 默认: open_file_cache_errors off;
    3. 配置块: http、server、location
    此配置项表示是否在文件缓存中缓存打开文件时出现的找不到路径、没有权限等错误信

    不被淘汰的最小访问次数

    1. 语法: open_file_cache_min_uses number;
    2. 默认: open_file_cache_min_uses 1;
    3. 配置块: http、server、location
    它与 open_file_cache 中的 inactive 参数配合使用。如果在 inactive 指定的时间段内,访问次
    数超过了 open_file_cache_min_uses 指定的最小次数,那么将不会被淘汰出缓存。

    检验缓存中元素有效性的频率

    1. 语法: open_file_cache_valid time;
    2. 默认: open_file_cache_valid 60s;
    3. 配置块: http、server、location
    4. 默认为每60秒检查一次缓存中的元素是否仍有效。

    对客户端请求的特殊处理

    忽略不合法的HTTP头部

    1. 语法: ignore_invalid_headers on|off;
    2. 默认: ignore_invalid_headers on;
    3. 配置块: http、server
    如果将其设置为 off ,那么当出现不合法的 HTTP 头部时, Nginx 会拒绝服务,并直接向用
    户发送 400 Bad Request )错误。如果将其设置为 on ,则会忽略此 HTTP 头部。

    HTTP头部是否允许下划线

    1. 语法: underscores_in_headers on|off;
    2. 默认: underscores_in_headers off;
    3. 配置块: http、server
    默认为 off ,表示 HTTP 头部的名称中不允许带 “_” (下划线)

    If-Modified-Since头部的处理策略

    1. 语法: if_modified_since[off|exact|before];
    2. 默认: if_modified_since exact;
    3. 配置块: http、server、location
    出于性能考虑, Web 浏览器一般会在客户端本地缓存一些文件,并存储当时获取的时
    间。这样,下次向 Web 服务器获取缓存过的资源时,就可以用 If-Modified-Since 头部把上次获
    取的时间捎带上,而 if_modified_since 将根据后面的参数决定如何处理 If-Modified-Since
    部。

    参数说明

    ·off:表示忽略用户请求中的If-Modified-Since头部。这时,如果获取一个文件,那么会
    正常地返回文件内容。HTTP响应码通常是200。
    ·exact:
    将If-Modified-Since头部包含的时间与将要返回的文件上次修改的时间做精确比
    较,如果没有匹配上,则返回200和文件的实际内容,如果匹配上,则表示浏览器缓存的文
    件内容已经是最新的了,没有必要再返回文件从而浪费时间与带宽了,这时会返回304 Not
    Modified,浏览器收到后会直接读取自己的本地缓存。
    before:是比exact更宽松的比较。只要文件的上次修改时间等于或者早于用户请求中 的If-Modified-Since头部的时间,就会向客户端返回304 Not Modified。

    DNS解析地址:

    1. 语法: resolver address...;
    2. 配置块: http、server、location
    设置 DNS 名字解析服务器的地址,例如
    resolver 127.0.0.1 192.0.2.1;
    DNS解析的超时时间
    1. 语法: resolver_timeout time;
    2. 默认: resolver_timeout 30s;
    3. 配置块: http、server、location
    4. 此配置项表示DNS解析的超时时间

  • 相关阅读:
    前后端、数据库时间格式化方法
    java接口+vue后台管理+uniapp前端 移动端商城
    报错解决:pandas的依赖项openpyxl
    java计算机毕业设计合同管理源码+mysql数据库+系统+lw文档+部署
    SpringBoot(三):什么是Maven?
    90.STL-谓词的使用
    ELTEK电源维修SMPS5000SIL整流器模块故障分析及特点
    Web通用漏洞--sql注入
    skimage学习(3)——使灰度滤镜适应 RGB 图像、免疫组化染色分离颜色、过滤区域最大值
    朗强:高清视频HDMI延长器的特点
  • 原文地址:https://blog.csdn.net/qq_62309585/article/details/128130613