Nginx 优化配置及详细注释~转

news2024/12/22 18:46:24

Nginx 优化配置及详细注释

转https://www.cnblogs.com/taiyonghai/p/5610112.html

Nginx 的nginx.conf文件,是调优后的,具体影响已经写清楚注释,可以拿来用,有一些设置无效,我备注上了,不知道是不是版本的问题,回头查一下再更正。 

#普通配置
#==性能配置


#运行用户
user nobody;
#pid文件
pid logs/nginx.pid;

#Nginx基于事件的非阻塞多路复用模型(epoll或kquene)
#一个进程在短时间内可以响应大量请求,工作进程设置与cpu数相同,避免cpu在多个进程间切换增加开销
#==worker进程数,通常设置<=CPU数量,auto为自动检测,一般设置最大8个即可,再大性能提升较小或不稳定
worker_processes auto;

#==将每个进程绑定到特定cpu上,避免进程在cpu间切换的开销
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

#==worker进程打开最大文件数,可CPU*10000设置,或设置系统最大数量655350
worker_rlimit_nofile 102400;
#全局错误日志
error_log  logs/error.log;


#events模块中包含nginx中所有处理连接的设置,并发响应能力的关键配置
events {
    #==每个进程同时打开的最大连接数(最大并发数)
    worker_connections 102400;
    
    #==告诉nginx收到一个新链接通知后接受尽可能多的链接
    #multi_accept on;
    
    #一般http 1.1协议下,浏览器默认使用两个并发链接
    #如果是反向代理,nginx需要和客户端保持连接,还需要和后端服务器保持连接
    #Http服务器时,设置max_client=worker_processes*worker_connections/2
    #反向代理时,设置max_client=worker_processes*worker_connections/4    
    #==最大可用客户端数
    #max_client 
    
    #==使用非阻塞模型,设置复用客户端线程的轮训方法
    use epoll;
}


#http模块控制着nginx http处理的所有核心特性
http {
    #打开或关闭错误页面中的nginx版本号等信息
    server_tokens on;
    #!server_tag on;
    #!server_info on;
    #==优化磁盘IO设置,指定nginx是否调用sendfile函数来输出文件,普通应用设为on,下载等磁盘IO高的应用,可设为off
    sendfile on;
    
    #缓存发送请求,启用如下两个配置,会在数据包达到一定大小后再发送数据
    #这样会减少网络通信次数,降低阻塞概率,但也会影响响应的及时性
    #比较适合于文件下载这类的大数据包通信场景
    #tcp_nopush on;
    #tcp_nodelay on;

    #==设置nginx是否存储访问日志,关闭这个可以让读取磁盘IO操作更快
    access_log on;
    #设置nginx只记录严重错误,可减少IO压力
    #error_log logs/error.log crit;

    #Http1.1支持长连接
    #降低每个链接的alive时间可在一定程度上提高响应连接数量
    #==给客户端分配keep-alive链接超时时间
    keepalive_timeout 30;

    #设置用户保存各种key的共享内存的参数,5m指的是5兆
    limit_conn_zone $binary_remote_addr zone=addr:5m;
    #为给定的key设置最大的连接数,这里的key是addr,设定的值是100,就是说允许每一个IP地址最多同时打开100个连接
    limit_conn addr 100;

    #include指在当前文件中包含另一个文件内容
    include mime.types;
    #设置文件使用默认的mine-type
    default_type text/html;
    #设置默认字符集
    charset UTF-8;

    #==设置nginx采用gzip压缩的形式发送数据,减少发送数据量,但会增加请求处理时间及CPU处理时间,需要权衡
    gzip on;
    #==加vary给代理服务器使用,针对有的浏览器支持压缩,有个不支持,根据客户端的HTTP头来判断是否需要压缩
    gzip_vary on;
    #nginx在压缩资源之前,先查找是否有预先gzip处理过的资源
    #!gzip_static on;
    #为指定的客户端禁用gzip功能
    gzip_disable "MSIE[1-6]\.";
    #允许或禁止压缩基于请求和相应的响应流,any代表压缩所有请求
    gzip_proxied any;
    #==启用压缩的最少字节数,如果请求小于1024字节则不压缩,压缩过程会消耗系统资源
    gzip_min_length 1024;
    #==数据压缩等级,1-9之间,9最慢压缩比最大,压缩比越大对系统性能要求越高
    gzip_comp_level 2;
    #需要压缩的数据格式
    gzip_types text/plain text/css text/xml text/javascript  application/json application/x-javascript application/xml application/xml+rss; 

    #静态文件缓存
    #==开启缓存的同时也指定了缓存文件的最大数量,20s如果文件没有被请求则删除缓存
    open_file_cache max=100000 inactive=20s;
    #==多长时间检查一次缓存的有效期
    open_file_cache_valid 30s;
    #==有效期内缓存文件最小的访问次数,只有访问超过2次的才会被缓存
    open_file_cache_min_uses 2;
    #当搜索一个文件时是否缓存错误信息
    open_file_cache_errors on;

    #==允许客户端请求的最大单文件字节数
    client_max_body_size 4m;
    #==客户端请求头缓冲区大小
    client_header_buffer_size 4k;

    #是否启用对发送给客户端的URL进行修改
    proxy_redirect off;
    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #==nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_connect_timeout 60;
    #==连接成功后,后端服务器响应时间(代理接收超时)
    proxy_read_timeout 120;
    #==后端服务器数据回传时间(代理发送超时)
    proxy_send_timeout 20;
    #==设置代理服务器(nginx)保存用户头信息的缓冲区大小
    proxy_buffer_size 32k;
    #==proxy_buffers缓冲区,网页平均在32k以下的设置
    proxy_buffers 4 128k;
    #==高负荷下缓冲大小(proxy_buffers*2)
    proxy_busy_buffers_size 256k;
    #==设定缓存文件夹大小,大于这个值,将从upstream服务器传
    proxy_temp_file_write_size 256k;
    #==1G内存缓冲空间,3天不用删除,最大磁盘缓冲空间2G
    proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:1024m inactive=3d max_size=2g;


    #设定负载均衡服务器列表
    upstream nginx.test.com{
        #后端服务器访问规则
        #ip_hash;
        #weight参数表示权重值,权值越高被分配到的几率越大
        #server 10.11.12.116:80 weight=5;
        #PC_Local
        server 10.11.12.116:80;
        #PC_Server
        server 10.11.12.112:80;
        #Notebook
        #server 10.11.12.106:80;
    }

    #server代表虚拟主机,可以理解为站点(挂载多个站点,只需要配置多个server及upstream节点即可)
    server {
        #监听80端口
        listen 80;
        #识别的域名,定义使用nginx.test.com访问
        server_name nginx.test.com;
        #设定本虚拟主机的访问日志
        access_log logs/nginx.test.com.access.log;
        
        #一个域名下匹配多个URI的访问,使用location进行区分,后面紧跟着的/代表匹配规则
        #如动态资源访问和静态资源访问会分别指向不同的位置的应用场景
        #
        # 基本语法规则:location [=|~|~*|^~] /uri/ {...} 
        # = 开头表示精确匹配
        # ^~ 开头表示uri以某个常规字符串开头,匹配成功后不再进行正则匹配
        # ~ 开头表示区分大小写的正则匹配
        # ~* 开头表示不区分大小写的正则匹配
        # !~ 开头表示区分大小写的不匹配的正则
        # !~* 开头表示不区分大小写的不匹配的正则
        # / 通用匹配,任何请求都会被匹配到
        #
        # 理解如下:
        # 有两种匹配模式:普通字符串匹配,正则匹配
        # 无开头引导字符或以=开头表示普通字符串匹配
        # 以~或~*开头表示正则匹配,~*表示不区分大小写
        # 【多个location时,先匹配普通字符串location,再匹配正则location】
        # 只识别URI部分,例如请求为“/test/1/abc.do?arg=xxx”
        # (1)先查找是否有=开头的精确匹配,即“location=/test/1/abc.do {...}”
        # (2)再查找普通匹配,以“最大前缀”为规则,如有以下两个location
        #    location /test/ {...}
        #    location /test/1/ {...}
        #    则匹配后一项
        # (3)匹配到一个普通location后,搜索并未结束,而是暂存当前结果,并继续进行正则搜索
        # (4)在所有正则location中找到第一个匹配项后,以此匹配项为最终结果
        # 【所以正则匹配项,匹配规则受定义前后顺序影响,但普通匹配不会】
        # (5)如果未找到正则匹配项,则以(3)中缓存的结果为最终结果
        # (6)如果一个匹配都没有,则返回404
        # location =/ {...}与location / {...}的差别
        # 前一个是精确匹配,只响应“/”的请求,所有“/xxx”形式的请求不会以“前缀匹配形式”匹配到它
        # 后一个正相反,所有请求必然都是以“/”开头,所以没有其他匹配结果时一定会执行到它
        # location ^~ / {...} ^~的意思是禁止正则匹配,表示匹配到此项后不再进行后续的正则搜索
        # 相当于普通匹配模式匹配成功后就以此结果为最终结果,停止进行后续的正则匹配
        location / {
            #定义服务器的默认网站根目录位置,可以写相对路径,也可以写绝对路径
            root html;
            #定义首页索引文件的名称
            index index.html index.htm;
            #定义转发后端负载服务器组
            proxy_pass http://nginx.test.com;
        }

        #定义错误提示页面
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/{
            root /var/www/virtual/htdocs;
            #过期时间1天
            expires 1d;
            #关闭媒体文件日志
            access_log off;
            log_not_found off;
        }
        #设定查看Nginx状态的地址
        location /NginxStatus {
            #!stub_status on; #无此关键字
            access_log off;
            auth_basic "NginxStatus";
            auth_basic_user_file conf/htpasswd;
        }
        #禁止访问的文件.htxxx
        location ~ /\.ht {
            #deny all;禁止访问,返回403
            deny all;
            #allow all;允许访问
        }
    }
    #网站较多的情况下ngxin又不会请求瓶颈可以考虑挂多个站点,并把虚拟主机配置单独放在一个文件内,引入进来
    #include website.conf;
}

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

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

相关文章

《kafka 核心技术与实战》课程学习笔记(七)

生产者压缩算法 怎么压缩&#xff1f; 压缩&#xff08;compression&#xff09;秉承了用时间去换空间的经典 trade-off 思想&#xff0c;具体来说就是用 CPU 时间去换磁盘空间或网络 I/O 传输量&#xff0c;希望以较小的 CPU 开销带来更少的磁盘占用或更少的网络 I/O 传输。…

初识mysql数据库之基础操作

目录 一、库的操作 1. 创建数据库 2. 数据库的编码集 2.1 数据库的编码问题 2.2 查看系统默认字符集和校验规则 2.3 创建数据库时指定字符集和校验集 2.4 校验规则对数据库的影响 3. 进入数据库 4. 确认自己当前所处的数据库 5. 修改数据库的编码集 6. 查看创建数据…

FPGA解码MIPI视频 OV5647 2line CSI2 720P分辨率采集 提供工程源码和技术支持

目录 1、前言2、Xilinx官方主推的MIPI解码方案3、本 MIPI CSI2 模块性能及其优越性4、我这里已有的 MIPI 编解码方案5、详细设计方案6、vivado工程介绍7、上板调试验证8、福利&#xff1a;工程代码的获取 1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI…

现代民机“飞行管理系统(FMS)”的功能和组成

01 什么是 “飞行管理系统”&#xff1f; 飞行管理系统&#xff08;FMS, Flight Management System&#xff09;&#xff0c;中文简称 “飞管”&#xff0c;是飞机航电系统的重要一员。 FMS 自 20 世纪 70 年代诞生以来&#xff0c;目前已有了跨越式发展。它作为航电关键系统&…

100种思维模型之质量控制理论思维模型-83

质量控制理论思维模型&#xff0c;又叫做戴明环思维模型&#xff0c;即PDCA循环思维模型。 在上世纪50年代&#xff0c;日本的商品和今天中国的商品一样&#xff0c;都是低质低价的代表&#xff0c;后来日本引入了戴明博士的质量控制理论&#xff0c;即PDCA循环理论&#xff0…

浅谈无线测温系统在高压开关柜中的应用

关注acrelzxz&#xff0c;了解更多详情 摘要&#xff1a;高压开关柜是配电系统中重要的组成部分&#xff0c;其主要作用是控制电荷、分配电能和开断电流等&#xff0c;对维持系统的稳定性有一定的保障作用。将无线测温技术应用于高压开关柜&#xff0c;可以实现对其进行实时的…

汽车芯片,竞逐新周期

在过去几年&#xff0c;SoC几乎成了智能汽车行业皇冠上的明珠。汽车芯片从通用型、分散化的单一功能芯片&#xff08;MCU&#xff09;快速转向集成化的多功能SoC&#xff08;System on Chip&#xff09;芯片。 比如&#xff0c;在智能座舱领域&#xff0c;CPU算力用于提高任务处…

国产chatgpt:基于chatGLM微调nlp分类任务

文章目录 一、源码网址1. 硬件设施&#xff1a;2. INT4 量化示例 二、重要的开源社区功能&#xff1a;网址&#xff1a;使用方法&#xff1a;利用方法&#xff1a;对 NLP 工作者的作用&#xff1a;对大模型工程师的用处&#xff1a; 三、重要的开源库四、提示词工程五、进行分类…

优思学院|精益生产管理七大要素

精益生产是一种有效的管理方法&#xff0c;通过优化生产流程和资源利用&#xff0c;帮助企业提高效率、降低成本&#xff0c;并最大程度地满足客户需求。在精益生产中&#xff0c;有七个关键的管理要素&#xff0c;它们分别是人员、资金、方法、机器设备、物料、市场及士气。 1…

避坑指南!一文帮您解决Jmeter录制chrome操作过程中遇到的问题!

Jmeter录制脚本原理 脚本录制时&#xff0c;Jmeter作为代理网关&#xff0c;通过监听某个端口&#xff0c;来捕获监听端口的报文信息&#xff0c;对抓取到的请求信息和响应信息进行转换为对应的行为函数。我们这里以设置chrome代理为例&#xff0c;然后使用jmeter进行脚本录制…

【方法】ZIP分卷压缩文件如何解压?

有时候文件太大&#xff0c;我们在压缩ZIP文件时会使用分卷压缩。 那后期想要解压ZIP分卷文件&#xff0c;要如何解压呢&#xff1f;不清楚的小伙伴&#xff0c;可以跟着小编来看看哦。 在解压ZIP分卷压缩文件之前&#xff0c;要先确保所有的分卷压缩包都存放在一个文件夹里&…

HTML5的新特性有哪些?

HTML5是近年来Web开发标准最巨大的飞跃。与以前的版本不同&#xff0c;HTML5并非仅仅用来表示Web内容&#xff0c;它的新使命是将Web带入一个成熟的应用平台&#xff0c;在HTML5平台上&#xff0c;视频、音频、图像、动画&#xff0c;以及同计算机的交互都被标准化。 HTML5在以…

大厂可能会问的那些思维题和技术点

精选大厂可能会问的那些思维题和技术点 一、题目一1.1、思路&#xff1a;1.2、代码实现 二、题目二三、const 的含义及实现机制, ,比如 : const int i, 是怎么做到 i 只可读的? ?四、到商店里买 200 的商品返还 100 优惠券( ( 可以在本商店代替现金) ) 。请问实际上折扣是多少…

6-js基础-4

JavaScript 基础 - 4 理解封装的意义&#xff0c;能够通过函数的声明实现逻辑的封装&#xff0c;知道对象数据类型的特征&#xff0c;结合数学对象实现简单计算功能。 函数综合案例 函数 理解函数的封装特性&#xff0c;掌握函数的语法规则 函数的基本使用 函数: 是可以被重复…

JavaScript的for循环学不明白怎么办?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言for循环的基本语法…

Apikit 自学日记:自动生成 API 文档

功能入口&#xff1a;API管理应用 / 选中某个项目 / 其他菜单 / 数据源同步&#xff08;API文档自动生成&#xff09; 该功能可通过配置数据源信息&#xff0c;实现基于数据源的API信息自动生成API文档。 当前支持5种数据源&#xff1a;Swagger URL、apiDoc、Github、gitlab、…

【FPGA零基础学习之旅#9】状态机基础知识

&#x1f389;欢迎来到FPGA专栏~状态机基础知识 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正…

MAC电脑使用技巧

Mac打开根目录 /user下的文件 mac 上怎么显示隐藏的/user文件夹&#xff0c;有两种方法可选~~~ 1&#xff0c;Finder界面是&#xff0c;最上方&#xff0c;通过“前往”进入“电脑”或文件夹 先进入到需要显示隐藏文件的文件夹下 接着按Command苹果键F,在窗格上会显示搜索栏 然…

爬虫框架和库有多重要?

爬虫框架和库在网络数据提取和分析中非常重它们为开发人员提供了工具和功能&#xff0c;使他们能够更轻松地从互联网上抓取数据。爬虫框架和库通常提供了高效的网络请求、数据解析和存储机制&#xff0c;简化了爬取过程。 使用爬虫框架库有以下几个重要优势&#xff1a; 快速开…

探索Android Jetpack Compose的Surface组件

随着声明性 UI 框架 Jetpack Compose 的出现&#xff0c;Android 开发变得更加简洁和直观。在这篇博客中&#xff0c;我们将深入探讨其中的一项基本构建块 —— Surface 组件&#xff0c;了解它如何影响 UI 的显示和设计。 一、Jetpack Compose和Surface组件 二、Surface组件…