nginx http块

nginx http块

主要记述常用的配置

include

引入mimie.types 或 额外的nginx配置或 *.types文件【需要的情况下】

http {
    # 引入默认的 mime.types 文件  
    include mime.types;
    # 引入额外的文件  
    include /usr/local/nginx/conf/nginx_custom.conf;
    # ... 其他 http 块配置 ...
    }

default_type

设置默认的MIME类型。当Nginx无法从mime.types文件中确定文件的具体MIME类型时,就会使用default_type指令所指定的MIME类型,最好不要修改它,默认值application/octet-stream

什么是MIME ?

一种用于标识文件内容类型的标准。MIME类型在HTTP请求和响应头中扮演重要的角色,浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL。因此,Web服务器在响应头中添加正确的MIME类型非常重要,以确保浏览器能够正确地解析和显示内容.

sendfile

当服务器(如 Nginx)需要向客户端发送文件时,sendfile 可以帮助减少内核与用户空间之间的数据拷贝次数,从而提高文件传输的性能

http {
   sendfile on;
   # ... 其他 http 块配置 ...  
}

keepalive_timeout

设置TCP连接的存活时间,服务器在keepalive_timeout设置的时间内没有收到请求,它将关闭连接;如果在keepalive_timeout超时之前,网络发生中断或错误,导致连接无法保持,那么连接可能会被立即关闭

http {
   # TCP保持连接时间,单位(秒)
   keepalive_timeout 65;
   # ... 其他 http 块配置 ...  
}

[!NOTE]

HTTP协议是基于TCP协议实现的,根据TCP协议;两台机器之间建立连接会经历3次握手(具体握手细节不赘述),3次握手成功结束后,两台主机就可以互发HTTP报文了

那么TCP连接什么时候释放呢?换句话说,现有2台机器A和B,A机器向B机器建立了TCP连接,A机器访问B机器提供的web服务,那么A机器发送3次HTTP报文后,便不再向B机器发送任何HTTP报文,此时如果TCP没有一种机制释放连接,在互联网的使用场景下一定会造成本地资源的浪费甚至枯竭。

gzip

压缩发送给客户端的响应,以减少传输的数据量,从而提高网页加载速度和网络带宽的使用效率。

http {
   # 开启数据压缩
   gzip on;
   # 压缩的数据类型
   gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
   # 当Nginx作为反向代理时,对 从上游服务器接收到的响应 压缩。any表示对任何请求都启用压缩
   gzip_proxied any;
   # 在响应头中添加Vary: Accept-Encoding字段,这样代理和缓存可以根据Accept-Encoding字段正确地缓存和分发不同版本的响应
   gzip_vary on; 
   # 设置压缩级别,范围从1(最快,压缩率最低)到9(最慢,压缩率最高)
   gzip_comp_level 6;
   # 设置用于压缩的内存缓冲区数量和大小。这可以根据服务器的性能进行调整
   gzip_buffers 16 8k;
   # 启用gzip压缩所需的HTTP协议最低版本
   gzip_http_version 1.1;
   # 启用压缩的最小响应体大小(单位:字节),小于这个大小的响应将不会被压缩,因为压缩这些小的响应可能不会带来明显的性能提升,反而可能增加CPU负担
   gzip_min_length 1000;
   # ... 其他配置 ...  
   }

[!NOTE]

全部的主流浏览器均支持gzip解压,所以不需要在客户端进行任何特殊的配置

charset

相应字符集

http {
    # 设置响应的字符集
    charset utf-8;
}

error_log 错误日志

记录错误日志

http {
    # 所有访问都会记录
    error_log  logs/error.log;
}

access_log 访问日志

记录客户端请求和服务器响应的详细信息

http {
    # 所有访问都会记录
    access_log  logs/access.log  main;
}

log_format

自定义日志格式

http {
    # 日志格式
    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  logs/access.log  main;
}

参数格式及说明

$remote_addr             客户端地址
$remote_user             客户端用户名称
$time_local              访问时间和时区
$request                 请求的URI和HTTP协议
$http_host               请求地址,即浏览器中你输入的地址(IP或域名
$status                  HTTP请求状态
$upstream_status         upstream状态
$body_bytes_sent         发送给客户端文件内容大小
$http_referer            url跳转来源
$http_user_agent         用户终端浏览器等信息
$ssl_protocol            SSL协议版本
$ssl_cipher              交换数据中的算法
$upstream_addr           后台upstream的地址,即真正提供服务的主机地址
$request_time            整个请求的总时间
$upstream_response_time  请求过程中,upstream响应时间

server 块

http服务配置集合,详情见《nginx server块》

posted @ 2024-06-25 14:21  勤匠  阅读(15)  评论(0编辑  收藏  举报