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块》
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/articles/18266942