Nginx配置文件详解和优化

Nginx核心配置文件nginx.conf详解与实战优化 你可能会觉得这些配置琐碎又复杂,但每一条背后都有其存在的理由。Nginx 强大的地方,不是它有多快,而是它给了你足够的控制权去精细调优每一寸资源。无论是 CPU 缓存、内存分配、文件描述符、TCP 协议栈,还是缓存策略、安全边界、日志追踪……你都可以通过一份文本文件,把这些抽象的概念变成实实在在的服务能力。这才是 DevOps 的精髓所在。所以,下次当你修改nginx.conf的时候,不妨多问一句:“我写的这一行,到底改变了什么? 阅读详情

大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出nginx的性能,你必须更深入一些。在本指南中,我将解释Nginx的那些设置可以微调,以优化处理大量客户端时的性能。需要注意一点,这不是一个全面的微调指南。这是一个简单的预览——那些可以通过微调来提高性能设置的概述。你的情况可能不同。

基本的 (优化过的)配置

我们将修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置。你应该能够在服务器的/etc/nginx目录中找到nginx.conf。首先,我们将谈论一些全局设置,然后按文件中的模块挨个来,谈一下哪些设置能够让你在大量客户端访问时拥有良好的性能,为什么它们会提高性能。本文的结尾有一个完整的配置文件。

高层的配置
nginx.conf文件中,Nginx中有少数的几个高级配置在模块部分之上。

user www-data;
pid /usr/local/nginx/logs/nginx.pid;
worker_processes auto;  
#worker_processes 定义了nginx对外提供web服务时的worder进程数。
#最优值取决于许多因素,包括(但不限于)CPU核的数量、存储数据的硬盘数量及负载模式,
#不能确定的时候,将其设置为可用的CPU内核数将是一个好的开始(设置为“auto”将尝试自动检测它)
worker_rlimit_nofile 100000;
#更改worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制,
#设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样nginx就不会有“too many open files”问题了。

Events模块
events模块中包含nginx中所有处理连接的设置

events {
worker_connections 2048;
#worker_connections设置可由一个worker进程同时打开的最大连接数,
#如果设置了上面提到的worker_rlimit_nofile,我们可以将这个值设得很高。
multi_accept on;
#multi_accept 告诉nginx收到一个新连接通知后接受尽可能多的连接
use epoll;
#use 设置用于复用客户端线程的轮询方法,
#如果你使用Linux 2.6+,你应该使用epoll。如果你使用*BSD,你应该使用kqueue
}

HTTP 模块
HTTP模块控制着nginx http处理的所有核心特性。因为这里只有很少的配置,所以我们只节选配置的一小部分。所有这些设置都应该在http模块中,甚至你不会特别的注意到这段设置

http {
server_tokens off;
#server_tokens 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,
#这样对于安全性是有好处的
sendfile on;
#sendfile可以让sendfile()发挥作用。sendfile()可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符),Pre-#sendfile是传送数据之前在用户空间申请数据缓冲区,之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据
#写入网络,sendfile()是立即将数据从磁盘读到OS缓存,因为这种拷贝是在内核完成的,
#sendfile()要比组合read()和write()以#及打开关闭丢弃缓冲更加有效
tcp_nopush on;
#tcp_nopush 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送
tcp_nodelay on;
#tcp_nodelay 告诉nginx不要缓存数据,而是一段一段的发送–当需要及时发送数据时,
#就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值
access_log off;
#access_log设置nginx是否将存储访问日志。关闭这个选项可以让读取磁盘IO操作更快(aka,YOLO)
error_log /var/log/nginx/error.log crit;
#错误日志级别:常见的错误日志级别有[debug | info | notice | warn | error | crit | alert | emerg],级别越高记录的信息越#少,生产场景一般是 warn | error | crit 这三个级别之一
#error_log 告诉nginx只能记录严重的错误
keepalive_timeout 10;
#keepalive_timeout 给客户端分配keep-alive链接超时时间,服务器将在这个超时时间过后关闭链接,
#我们将它设置低些可以让ngnix持续工作的时间更长
client_header_timeout 10;
client_body_timeout 10;
#client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间,
#我们也可以把这个设置低些
reset_timedout_connection on;
#reset_timeout_connection告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间
send_timeout 10;
#send_timeout 指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间,
#如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接
limit_conn_zone $binary_remote_addr zone=addr:5m;
#limit_conn_zone设置用于保存各种key(比如当前连接数)的共享内存的参数。5m就是5兆字节,这个值应该被设置的足够大以存储(32K*5)32byte状态或者(16K*5)64byte状态
limit_conn addr 100;
#limit_conn为给定的key设置最大连接数。这里key是addr,我们设置的值是100,也就是说我们允许每一个IP地址最多同时打开有100个连接
include       mime.types;
default_type  application/octet-stream;
charset UTF-8;
#charset设置我们的头文件中的默认的字符集
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
 #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
gzip on;
#gzip是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量
gzip_disable "msie6";
#gzip_disable为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容
gzip_proxied any;
#gzip_proxied允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求
gzip_min_length 1k;
#gzip_min_length设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,
#我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度
 gzip_buffers 4 16k;
 #压缩缓冲区
gzip_comp_level 2;
#gzip_comp_level设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的,
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
#gzip_type设置需要压缩的数据格式。上面例子中已经有一些了,你也可以再添加更多的格式

 open_file_cache max=100000 inactive=20s;
 #open_file_cache打开缓存的同时也指定了缓存最大数目,以及缓存的时间,
 #我们可以设置一个相对高的最大时间,这样我们可以在它们不活动超过20秒后清除掉
 open_file_cache_valid 30s;
 #open_file_cache_valid 在open_file_cache中指定检测正确信息的间隔时间
 open_file_cache_min_uses 2;
 #open_file_cache_min_uses 定义了open_file_cache中指令参数不活动时间期间里最小的文件数
 open_file_cache_errors on;
 open_file_cache_errors指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件,
 #我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置
}

一个完整的配置

user www-data;
pid /usr/local/nginx/logs/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;

events {
    worker_connections 51200;
    multi_accept on;
    use epoll;
}

http {
    server_tokens off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    access_log off;
    error_log /var/log/nginx/error.log crit;

    keepalive_timeout 60;
    client_header_timeout 10;
    client_body_timeout 10;
    reset_timedout_connection on;
    send_timeout 10;

    limit_conn_zone $binary_remote_addr zone=addr:5m;
    limit_conn addr 100;

    include mime.types;
    default_type mime.types;
    charset UTF-8;
    
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;

    gzip on;
    gzip_disable "MSIE [1-6]\.";
    gzip_buffers    4 16k;
    gzip_proxied any;
    gzip_min_length 1k;
    gzip_comp_level 2;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

########下面是引入虚拟主机配置等剩下的配置文件#####
    include /usr/local/nginx/conf/vhost/*.conf;
    #include /us/nginx/sites-enabled/*;
}

来自 https://m.chinaz.com/mip/article/401323.shtml

S32K系列之PDB框图详解及PDB触发ADC 可编程延迟模块PDB,PDB可提供从内部或外部触发或可编程间隔信号到ADC硬件触发输入的可控制延迟。 PDB可以选择提供脉冲输出,用作CMP块中的采样窗口。 S32K系列的PDB资源如下表: PDB功能框图 在下图中,以下字母表示的意义: N:PDB通道的总数 n:PDB通道号,范围从0到N-1 M:每个PDB通道的总可用预触发 m:预触发编号,范围从0到M-1 Y:脉冲输出的总数 y:脉冲数... 阅读详情

相关推荐

win下 Nginx.conf 路径配置注意事项(win)

本文介绍Nginx.conf 路劲配置注意事项

guigenyi的专栏 9908

华中农业大学C++考试基础练习题

实验一 1 通过日期求某月的天数。 输入日期的年份和月份,求该月有多少天。提示:对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。 输入描述 输入两个正整数y和m分别表示年份和月份。 输出描述 如果y和m满足条件:1900<=y<3000,0<m<13,输出该月的天数;否则输出“Input error!”。 输入样例 2010 12 输出样例 31 #include"iostream" using n

雨的博客 1万+

Nginx 配置文件属性总分析(nginx.conf)

配置文件整理总分析,比较全面的分析了 nginx.conf 里面每个配置 # ------------------------------------- 全局配置 # Nginx worker 进程运行的用户及用户组 # 语法:user username[groupname] 默认:user nobody nobody # user用于设置master进程启动后,fork出的worker进程运行在那个用户和用户组下。当按照"user username;"设置时,用户组名与用户名相同。 # 若用户..

卡尔特斯 478

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 758

别再用Selenium被秒封了!2026最新反爬全突破+动态渲染实战(通过率99%)

做爬虫的同学,肯定都有过这样的经历:遇到一个纯前端渲染的网站,Requests抓包只能拿到一堆空的div标签,所有数据都是JS动态生成的。这时候你想到了Selenium,结果刚打开浏览器,网站直接跳出来一个"检测到机器人访问"的页面,或者直接返回403。我之前做一个跨境电商的爬虫项目,就踩了这个大坑。一开始用默认的Selenium ChromeDriver,10次请求有9次被封,通过率不到10%。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1385

nginx 限速

nginx 是个不错的web服务器,提供了全方位的限速功能,主要的功能模块是ngx_http_core_module、ngx_http_limit_conn_module和 ngx_http_limit_req_module,第一个模块中有limit_rate功能(限网速带宽),后两个模块从字面上讲,功能分别是限制连接(limit connection)和限制请求(limit request),这...

weixin_34252686的博客 286

由浅入深理解Latent Diffusion/Stable Diffusion(5):利用预训练模型快速开始自己的科研任务

从零开始训练一个stable diffusion大概需要16万美元和1个月的时间,这对于一般的科研工作者来说难以承受,所以如何利用预训练模型快速开始自己的科研训练是一个非常有价值的问题。这篇博客将演示如何利用预训练模型快速开始自己的科研任务,希望对大家有所帮助!

沉迷单车的追风少年 3368

nginx 超时设置_字节跳动8年架构师Nginx调优笔记分享

点关注,不迷路!如果本文对你有帮助的话不要忘记点赞支持哦!大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了。而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出Nginx的性能,你必须更深入一些。在本指南中,我将解释Nginx的那些设置可以微调,以优化处理大量客户...

weixin_39714164的博客 720

数字图像处理 基于matlab、opencv计算图像的梯度方向和梯度幅值

图像可以被视为标量场(即二维函数)。通过微分将标量场转换为矢量场。梯度是一个向量,描述了在x或y方向上移动时,图像变化的速度。我们使用导数来回答这样的问题,图像梯度的大小告诉图像变化的速度,而梯度的方向告诉图像变化最快的方向。因为梯度有方向和大小,所以将这些信息编码为向量是很自然的。该向量的长度提供了梯度的大小,而其方向提供了梯度方向。因为梯度在每个位置可能不同,所以我们在每个图像位置用不同的向量来表示它。

学以致用 知行合一 3202

动态视频目标追踪系统:基于YOLOv11+DeepSORT的从入门到实战全流程指南

仅保留车辆类别(假设车辆类别ID为2)if det.class_index == 2: # 车辆类别ID通过本指南,你已完成从环境搭建数据准备模型训练到追踪系统与UI界面的全流程,搭建了一套完整的动态视频目标追踪系统。该系统在安防监控、交通管理等场景中具有实用价值,可实现目标的实时稳定追踪。未来,你可尝试结合多模态特征(如目标外观+运动特征)提升追踪鲁棒性,或探索轻量化模型部署(如TensorRT加速),让系统在边缘设备上也能高效运行。

LXY_LOVE36的博客 142

nginx.conf配置文件内容

#user  nobody; worker_processes  1; #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info; #pid        logs/nginx.pid; events {     worker_connections  1...

zhaoyc1946的博客 443

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案

本文主要介绍了safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 Windows 2.2 Linux

weixin_43178406的博客 15万+

nginx的vim nginx.conf配置文件内容详解及实验,nginx的优化和防盗链

time_wait所占用的系统资源很小,完全可以忽略不记,但是太多了,就有一定的影响,进行连接断开,尽快的把time_wait状态连接进行回收。root的匹配模式相当于拼接(在root的工作目录,访问的就是uri/下的内容,可以写作为location /xy101 root /opt/test),可以写在server模块也可以写在http里,也可以写在location。4.http模块:转发和处理http请求,主要处理静态页面,设置正向代理和反向代理,缓存,定义日志格式,重定向配置。

Alone8046的博客 2241

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Nginx 配置文件详解及优化

目录: Nginx 服务的难点在于对配置文件的理解和优化,熟练掌握 Nginx 配置文件参数的含义可以更快的掌握 Nginx,如下为 Nginx.conf 配置文件常用参数详解: #定义 Nginx 运行的用户和用户组 user www www; #启动进程,通常设置成和 cpu 的核数相等 worker_processes 8; worker_cpu_affinity 000000...

番茄炒蛋君的博客 297

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Nginx配置文件详解与优化指南

本文提供了一个完整的 Nginx 配置文件示例,详细注释了主要配置项及其常见可选值。配置文件分为全局块、events 块、http 块、server 块和 upstream 块,涵盖了用户设置、工作进程、错误日志、连接处理、HTTP 协议、虚拟主机、URL 匹配、静态资源缓存、反向代理、负载均衡和 SSL/TLS 配置等内容。每个配置项的作用和可选值通过表格形式进行了总结,便于快速查阅和理解。例如,worker_processes 可设置为 CPU 核心数或 auto,gzip 用于启用压缩,proxy_p

爱的叹息的专栏 1194

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Nginx配置文件优化详解

前言 本文假定已经通过yum成功安装nginx。nginx.conf文件位于:/etc/nginx/nginx.conf。其他安装方式nginx.conf文件位置可能不同。 nginx.conf 范例 user www; worker_processes auto; worker_cpu_affinity auto; worker_rlimit_nofile 65535; error_log ...

爱吃肉的夫子 453

关于Nginx的那些事:Nginx的配置文件详解以及基本优化

#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pi...

Nigel的博客 391

Nginx配置文件详解与优化建议

1、概述 今天来详解一下Nginx的配置文件,以及给出一些配置建议,希望能对大家有所帮助。 2、nginx.conf 1)配置文件位置 nginx 安装目录的 conf 文件夹下,例如:/usr/local/nginx/conf/nginx.conf 。 也可以将配置文件放置在任意位置,在启动Nginx时指定配置文件的位置,例如:./nginx -c /home/nginx.conf 2)worker_processes 设置 worker 的数量,Nginx的进程模型采用的是master、worker模式

追风人的博客 567

PHP+Nginx部署配置文件正确优化改良详解

正确配置Nginx+PHP是我们在Nginx下搭建Php环境必须好好掌握的方法,网上的文件太多太杂,大多都是复制粘贴的,很多错误,经过小编多次测试,和网上学习,给以一个较为正确的代码,希望对你有用。 Nginx配置文件里指令的继承关系:Nginx配置文件分为好多块,常见的从外到内依次是「http」、「server」、「location」等等,缺省的继承关系是从外到内,也就是说一般情况下内层块会自...

511遇见 1644

nginx 优化策列 配置文件详解

Nginx的启动、停止与重启 http://www.cnblogs.com/codingcloud/p/5095066.html 参考地址 https://www.zybuluo.com/phper/note/89391 如何使用命令查看nginx服务器的访问并发连接数量 ht...

chunxukuang9920的博客 102

Nginx配置文件详解+多种优化

nginx的外部及内部优化问题: 软件外部:我们首先从外部说起,外部主要是搭建nginx的物理设施。 静态页面: 1.磁盘的读写速度。 因为静态网页主要是从磁盘中调取。 2.网卡的带宽。 如果你电信宽带是1000M的网速,但是你的网卡只支持10M的速度。这是万万不可采取的。 动态页面: 1.磁盘的读写速度。 2.网卡的带宽。 3.cup的性能。 因为动态网页是由脚本构...

Mr.Wang的博客 293

Nginx学习笔记(二)——编译安装步骤详解、Nginx性能优化、Nginx主配置文件详解

文章目录一、Nginx相关问题1.1 Nginx是如何处理一个请求的呢?1.2 Nginx为什么不使用多线程?为什么性能这么高?nginx是如何实现高并发的?二、Nginx的编译安装及调优2.1 编译安装2.2调优三、Nginx主配置文件结构 一、Nginx相关问题 1.1 Nginx是如何处理一个请求的呢? (1)nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址;然后在ngi...

ranrancc_的博客 859

nginx主配置文件详解及优化

一,优化方向 1)worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数。 2)worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配...

weixin_34174132的博客 125
上一篇: 二叉树,B树,B+树
下一篇: centos 多个git源配置
苦艾酒丶
博客等级 码龄9年 41粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值