Ubuntu环境 nginx.conf详解(三)

1、nginx.conf 结构详解:

http 块:用于配置 HTTP 服务器的相关设置,包括处理 HTTP 和 HTTPS。

stream 块:用于配置 TCP/UDP 代理服务器,适用于需要进行四层负载均衡的情况。

...            # 全局块
events {...}   # events块
http {						  # http块...   					  # http全局块server { 					  # server块...       				  # server全局块location [PATTERN] {...}  # location块location [PATTERN] {...}  # location块}server { ... } 			  # server块
}stream {				      # stream块server { ... } 			  # server块
}

2、详细nginx.conf详解:

1、全局块:

#定义 用户和用户组,默认为 nobody,若配置为 user nobody nobody, 则所有用户都能启动 nginx 进程
user myUsr myGroup;# 工作进程数可设置为CPU的核心数
worker_processes  1;# 进程文件路径
pid /user/local/nginx/nginx.pid;# 日志路径和日志级别,日志级别有:debug|info|notice|warn|error|crit|alert|emerg;
error_log logs/error.log debug;

2、events 块:

events {# 设置网路连接序列化是为了防止惊群现象发生,默认为 on;accept_mutex on;# 是否同时接受多个网络连接指令默认值为 off;multi_accept on;# 事件驱动模型的可选项有:select|poll|kqueue|epoll|resig|/dev/poll|eventport;use epoll;# 最大连接数worker_connections  1024;
}

 3、http 全局块:

子模块相同配置,可统一配置在 http全局 中。

http {# 文件扩展名与文件类型映射表在 nginx/conf 下include mime.types;# 默认文件类型的默认值为 text/plain;default_type  application/octet-stream;# 是否开启服务日志的默认值为 on,开启了之后需要配置 access_log 路径;access_log off;# 自定义服务日志格式log_format myLogFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';# 设置日志的格式access_log log/access.log myLogFormat;# sendfile 指令指定 nginx 是否调用 sendfile 函数来输出文件,减少用户空间到内核空间的上下文切换;对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的负载;sendfile on;# 每个进程每次最大传输值,指令的默认为 0,表示不设上限;sendfile_max_chunk 100k;# 长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置;长连接在请求大量小文件的时候,可以减少重建连接的开销;但如果上传大文件时在设置的超时时间内没上传完成会导致失败,如果设置时间过长,用户又多,长时间保持连接会占用大量资源;keeplive_timeout 100;# 响应客户端的超时时间,仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接;send_timeout 75;# 客户端请求头的区缓冲区大小,为避免请求 header 过大出现 400 错误,可以适当设置大一点;client_header_buffer_size 32k;# 客户端请求头的最大缓冲区数量和大小,为避免请求 header 过大出现 400 错误,可以适当设置大一点;large_client_header_buffers 8 32k;# 允许客户端请求的最大字节数,为避免请求 header 过大出现 400 错误,可以适当设置大一点;client_max_body_size  10m;# 客户端请求体的缓冲区大小,为避免请求 header 过大出现 400 错误,可以适当设置大一点;client_body_buffer_size  128k;# 配置 https_proxy 反向代理,配置如下:# 表示 Nginx 跟代理服务器连接超时时间proxy_connect_timeout  75;# 表示 Nginx 与代理服务器两个成功的响应操作之间超时时间;proxy_read_timeout  75;# 表示 Nginx 传输文件至代理服务器的超时时间;proxy_send_timeout 100;# 用于设置从代理服务器读取并保存用户头信息的缓冲区大小;proxy_buffer_size  4k;# 设置代理缓冲区大小,Nginx 针对单个连接,缓存来自代理服务器的响应,网页平均在32k以下的话,可以设置为 4 32K ;proxy_buffers  4  32k;# 设置高负荷下的缓冲大小,一般为 proxy_buffers 的两倍;proxy_busy_buffers_size  64k;# 当 proxy_buffers 放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M,它与 proxy_cache 没有关系;大于这个值,将从 upstream 服务器传回,设置为 0 禁用;proxy_max_temp_file_size  64k;# 当缓存被代理的服务器响应到临时文件时,这个选项限制每次写临时文件的大小;proxy_temp_file_write_size 64k;# 用于指定临时文件所在的目录;proxy_temp_path  proxy_temp;}

4、反向代理统一配置:

# 配置 https_proxy 反向代理,配置如下:http {...# 表示 Nginx 跟代理服务器连接超时时间proxy_connect_timeout  75;# 表示 Nginx 与代理服务器两个成功的响应操作之间超时时间;proxy_read_timeout  75;# 表示 Nginx 传输文件至代理服务器的超时时间;proxy_send_timeout 100;# 用于设置从代理服务器读取并保存用户头信息的缓冲区大小;proxy_buffer_size  4k;# 设置代理缓冲区大小,Nginx 针对单个连接,缓存来自代理服务器的响应,网页平均在32k以下的话,可以设置为 4 32K ;proxy_buffers  4  32k;# 设置高负荷下的缓冲大小,一般为 proxy_buffers 的两倍;proxy_busy_buffers_size  64k;# 当 proxy_buffers 放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M,它与 proxy_cache 没有关系;大于这个值,将从 upstream 服务器传回,设置为 0 禁用;proxy_max_temp_file_size  64k;# 当缓存被代理的服务器响应到临时文件时,这个选项限制每次写临时文件的大小;proxy_temp_file_write_size 64k;# 用于指定临时文件所在的目录;proxy_temp_path  proxy_temp;...
}

5、http_gzip 模块配置:

http {...# 如果设置为 on 则表示开启 gzip 压缩输出,可减少网络传输;gzip on;# 设置允许压缩的页面最小字节数(到达这个大小才进行压缩),页面字节数从 header 头的 content-length 中进行获取。默认值是 20。建议设置成大于 1k 的字节数,小于 1k 可能会越压越大;gzip_min_length 1K;# 设置系统获取多少个单位的缓存用于存储 gzip 的压缩结果数据流,4 16k 表示按照原始数据大小以 16k 为单位的 4 倍进行内存申请;gzip_buffers  4  16k;# 设置 http 协议的版本,早期的浏览器不支持 Gzip 压缩,用户就会看到乱码,所以为了支持前期版本加上了这个选项;如果你用了 Nginx 的反向代理并启用 Gzip 压缩的话就需要加上,而由于末端通信是 http/1.0,故请设置为 1.0;gzip_http_version 1.0;# zip 压缩比,为 1 时,压缩比最小处理速度最快;为 9 时,压缩比最大但处理速度最慢;gzip_comp_level 6;# 匹配 mime 类型进行压缩,无论是否指定,text/html 类型总是会被压缩的;gzip_types text/plain text/css application/json;# 配置开启或者关闭后端服务器返回的结果是否压缩,Nginx 作为反向代理的时候启用,匹配的前提是后端服务器必须要返回包含 Via 的 header头;gzip_proxied any;# 配置和 http 头有关系,会在响应头加个 Vary: Accept-Encoding ,可以让前端的缓存服务器缓存经过 gzip 压缩的页面,例如:用 Squid 缓存经过 Nginx 压缩的数据;gzip_vray on;...
}

6、负载均衡后台服务器(http中配置):

http {...upstream backend {server 192.168.56.10:8080 max_fails=2 fail_timeout=30s backup; # 热备server 192.168.56.11:8080 max_fails=2 fail_timeout=30s;}...
}

7、配置 TCP/UDP 代理服务器:

stream {# 负载均衡后台服务器upstream backend {server backend1.example.com:9000 max_fails=2 fail_timeout=30s backup; # 热备;server backend2.example.com:9000;# 可以添加更多服务器... }# server 定义了监听的地址和端口,并指定如何将连接转发到后端服务器。server {# 端口listen 80;location / {# 地址proxy_pass http://backend;# 其他代理设置...}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI真的可以“陪伴”吗?

人们普遍渴求陪伴,仅有4.6%的人认为自己的陪伴需求都被满足了,剩下大部分人群都面临着各种各样的社交困境。 “陪伴”有多个层次。最狭义的“陪伴”是在人与人之间发生的;但稍微放宽一些,宠物甚至植物、家具也会让…

Golang 的并发优势

在如今的编程领域,一个程序能够同时处理多个任务的能力非常重要,这就是所谓的并发处理。而 Golang 在并发编程方面表现十分出色,具有很多独特的优势,简直不要太简单。 一、轻量级的协程(Goroutine) 在传统…

基于cobra开发的k8s命令行管理工具k8s-manager

基于cobra开发的k8s命令行管理工具k8s-manager 如果觉得好用,麻烦给个Star!通用配置1 node 分析所有node的资源情况2 analysis 分析Node节点上的资源使用构成3 image 获取指定namespace的所有镜像地址4 resource 获取指定namespace的所有limit 与 Requests大小5 top…

从零开始C++游戏开发之第七篇:游戏状态机与回合管理

在游戏开发的道路上,状态管理是一个无法绕开的重要课题。尤其是在棋牌类游戏中,游戏的进行需要有条不紊地按照回合推进,同时管理多个游戏状态,如“等待玩家加入”、“游戏进行中”、“结算阶段”等。如何优雅且高效地实现这些逻辑…

USB Hub 检测设备

系列文章目录 xHCI 简单分析 USB Root Hub 分析 USB Hub 检测设备 文章目录 系列文章目录一、引言二、hub_eventshub_port_connect_changeusb_alloc_devusb_set_device_statehub_port_initusb_new_device 一、引言 USB Hub 检测设备 一文中讲到,当有 USB 插入时&…

MySQL从入门到入土---MySQL表的约束 (内含实践)---详细版

目录 引入: null 与not null default: comment列描述 : not null 和 default: zerofill : 主键:primary key 复合主键: 自增长:auto_increment 唯一键:unique key 外键&a…

Redis大Key问题全解析

1. 引言 1.1 什么是Redis大Key? Redis大Key是指单个Key对应的数据量过大,占用过多的内存或导致操作耗时较长的现象。大Key可以是以下几种常见数据类型中的任意一种: String类型:单个字符串的长度过大。List类型:包含…

VIVO Android面试题及参考答案

请重写算法题:求数组的全排列。 思路: 要获取一个数组的全排列,我们可以利用回溯算法。具体来说,回溯算法通过递归的方式逐步生成排列,在每一步都将一个元素加入排列中,然后在下一步递归中排除已选元素,回溯的时候撤销选择,尝试其他可能。 步骤: 递归生成排列: 使…

易语言 OCR 文字识别

一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…

postgreSql对分钟级的降雨数据进行插值为整小时

postgreSql对分钟级的降雨数据进行插值为整小时 1.SQL语句实现:对分钟级的降雨数据进行插值为整小时2.SQL语句实现:将水库、水文站、水闸按照分钟时间插值到小时 1.SQL语句实现:对分钟级的降雨数据进行插值为整小时 --核查某个小流域的降雨量…

docker如何打包部署springboot的项目

一、将项目打包成jar包,或者war包。 首先,确保已经使用 Maven 或 Gradle 等工具将项目打包成 JAR 文件。如果使用的是 Maven,可以通过以下命令打包: #gradle 构建的项目 gradle build #mvn 构建项目、 mvn clean packege …

【JS】for-in 和 for-of遍历对象的区别

【介绍】 for-in 和 for-of 都是 JavaScript 中用于遍历数据结构的循环语句,但它们的工作原理和适用场景有所不同。特别是它们在遍历对象时的行为是不同的。 【区别】 for-in 遍历对象 for-in 是用于遍历对象的 可枚举属性的键名(属性名)…

GraalVM完全指南:云原生时代下使用GraalVM将Spring Boot 3应用转换为高效Linux可执行文件

一、前言 在现代软件开发中,启动速度和资源利用率常常是衡量应用性能的关键指标。对于基于Spring Boot的应用来说,虽然它们易于开发和部署,但JVM的启动时间有时会成为一个瓶颈。本文介绍如何使用GraalVM将Spring Boot 3应用编译成原生Linux可执行文件,从而显著提高启动速度…

Word批量更改题注

文章目录 批量更改批量去除空格 在写文章的时候,往往对图片题注有着统一的编码要求,例如以【图 1- xx】。一般会点击【引用】->【插入题注】来插入题注,并且在引用的时候,点击【引用】->【交叉引用】,并且在交叉…

基于SpringBoot的蜗牛兼职网的设计与实现

一、项目背景 随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对蜗牛兼职网方面的要求也在不断提高,需要兼职工作的人数更是不断增加,使得蜗牛兼职网的开发成为必需而且紧迫的事情。蜗牛…

shardingsphere分库分表项目实践5-自己用java写一个sql解析器+完整项目源码

前1节我们介绍了 shardingsphere 分表分库的sql解析与重写: shardingsphere分库分表项目实践4-sql解析&重写-CSDN博客 那么shardingsphere sql 解析底层究竟是怎么实现的呢,其实它直接用了著名的开源软件 antlr . antlr 介绍: ANTLR&a…

光谱相机与普通相机的区别

一、成像目的 普通相机:主要目的是记录物体的外观形态,生成人眼可见的、直观的二维图像,重点在于还原物体的形状、颜色和纹理等视觉特征,以供人们进行观赏、记录场景或人物等用途。例如,拍摄旅游风景照片、人物肖像等…

【Linux】Linux中用户信息相关的配置文件:/etc/passwd、/etc/group、/etc/shadow、/etc/sudoers

1 用户信息 1.1 /etc/passwd linux上用户的信息保存在/etc/passwd中,看文件名会以为这里保存的是用户密码,但实际上用户密码保存在另一个文件中。 /etc/passwd文件中每行保存一个用户的信息,例如: root:x:0:0:root:/root:/bin…

TiDB 的MPP架构概述

MPP架构介绍: 如图,TiDB Server 作为协调者,首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换,让表连接在一个TiFlash上。另外 TiFlash会作为计算节点,每个TiFlash都负责数据交换,表连接…

Elasticsearch-索引的批量操作

索引的批量操作 批量查询和批量增删改 批量查询 #批量查询 GET product/_search GET /_mget {"docs": [{"_index": "product","_id": 2},{"_index": "product","_id": 3}] }GET product/_mget {"…