当前位置: 首页 > news >正文

如何在 Ubuntu 22.04 上部署 Nginx 并优化以应对高流量网站教程

简介

本教程将教你如何优化 Nginx,使其能够高效地处理高流量网站。 Nginx 是一个强大且高性能的 Web 服务器,以其高效处理大量并发连接的能力而闻名,这使得它成为高流量网站的流行选择。 正确优化 Nginx 可以显著提高服务器的性能,减少加载时间,并确保你的网站能够处理大量的请求而不会崩溃。

本教程将手把手地指导你完成优化 Nginx 以应对高流量的步骤,重点关注配置调整、缓存、连接处理和安全增强。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

第一步:更新 Nginx 到最新版本

保持 Nginx 更新可以确保你拥有最新的性能改进、功能和安全补丁。

更新 Nginx 的命令:

# For Ubuntu/Debian
sudo apt update
sudo apt install nginx# For RHEL/AlmaLinux/Rocky Linux
sudo dnf update
sudo dnf install nginx

第二步:调整工作进程和连接数

Nginx 使用工作进程来处理传入的连接。优化这些设置对于处理高流量至关重要。

编辑 Nginx 配置文件:

sudo nano /etc/nginx/nginx.conf

调整工作进程和工作连接数:

worker_processes auto;
worker_connections 1024;
  • worker_processes auto;: 这个设置会自动将工作进程的数量设置为与可用的 CPU 核心数匹配,从而优化服务器的性能。
  • worker_connections 1024;: 指定每个工作进程可以同时处理的最大连接数。这个值可以根据服务器的性能和流量进行增加。

启用多线程(可选):

events {worker_connections 1024;multi_accept on;
}
  • multi_accept on;: 这个设置允许一个工作进程一次接受多个新连接,从而在高峰流量期间提高性能。

第三步:启用 Gzip 压缩

Gzip 压缩可以减少传输数据的大小,从而缩短加载时间并减少带宽使用。

在 Nginx 配置中启用 Gzip:

sudo nano /etc/nginx/nginx.conf

http 块下添加或修改以下行:

http {gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;gzip_min_length 256;gzip_comp_level 5;
}
  • gzip on;: 启用 Gzip 压缩。
  • gzip_types: 指定要压缩的 MIME 类型。
  • gzip_min_length 256;: 仅压缩大于 256 字节的响应。
  • gzip_comp_level 5;: 设置压缩级别(1-9);更高的级别提供更好的压缩,但会使用更多的 CPU。

第四步:配置静态内容缓存

缓存静态内容(如图像、CSS 和 JavaScript)可以减少服务器负载并加快响应速度。

将以下行添加到 server 块中:

location ~* \\.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;add_header Cache-Control "public, no-transform";
}
  • expires 30d;: 将浏览器缓存过期时间设置为 30 天。
  • add_header Cache-Control "public, no-transform";: 添加缓存控制头。

第五步:优化缓冲区和超时

优化缓冲区和超时可以帮助 Nginx 更有效地处理更多连接,而不会使内存过载。

编辑主要的 Nginx 配置文件:

sudo nano /etc/nginx/nginx.conf

http 块下添加以下设置:

http {client_body_buffer_size 16k;client_max_body_size 8m;client_header_buffer_size 1k;large_client_header_buffers 4 16k;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;
}
  • client_body_buffer_size 16k;: 设置客户端请求的缓冲区大小。
  • client_max_body_size 8m;: 限制客户端请求的最大大小。
  • sendfile on;: 启用零拷贝文件传输,从而减少 CPU 负载。
  • tcp_nopush on;tcp_nodelay on;: 优化 TCP 连接处理以获得更好的性能。
  • keepalive_timeout 65;: 设置保持活动超时时间,允许连接保持打开 65 秒。

第六步:实现负载均衡

Nginx 可以将传入的流量分配到多个服务器上,从而提高性能和冗余。

在 Nginx 中配置负载均衡:

upstream backend {server backend1.example.com weight=3;server backend2.example.com;
}server {listen 80;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
  • upstream backend { ... }: 定义一个包含多个服务器的后端组。
  • weight=3;: 以指定的权重分配流量,将三倍的流量发送到第一个服务器。

第七步:启用连接缓存和调优

Nginx 连接缓存和调优可以显著提高它处理多个连接的方式。

nginx.confhttp 块下添加以下指令:

http {proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;server {location / {proxy_cache my_cache;proxy_cache_valid 200 1h;proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;proxy_pass http://backend;}}
}
  • proxy_cache_path: 定义缓存代理响应的路径。
  • proxy_cache_use_stale: 如果后端服务器不可用,则使用过时的缓存响应。

第八步:配置安全设置

保护你的 Nginx 服务器还可以防止 DDoS 攻击并提高性能。

限制请求大小和速率限制:

http {limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;server {location / {limit_req zone=one burst=5;}}
}
  • limit_req_zone: 定义用于速率限制的共享内存区域。
  • rate=10r/s: 将请求限制为每秒 10 个请求。

第九步:测试并重启 Nginx

在进行更改后,测试你的 Nginx 配置是否有错误并重启服务器。

测试 Nginx 配置:

sudo nginx -t

重启 Nginx:

sudo systemctl restart nginx

结尾

优化 Nginx 以应对高流量网站涉及到调整各种设置,以提高性能、减少延迟和保护服务器。 通过遵循这些步骤,你可以确保你的 Nginx 服务器能够有效地处理大量流量。 定期监控服务器的性能,并根据需要调整设置,以保持其最佳运行状态。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

相关文章:

如何在 Ubuntu 22.04 上部署 Nginx 并优化以应对高流量网站教程

简介 本教程将教你如何优化 Nginx,使其能够高效地处理高流量网站。 Nginx 是一个强大且高性能的 Web 服务器,以其高效处理大量并发连接的能力而闻名,这使得它成为高流量网站的流行选择。 正确优化 Nginx 可以显著提高服务器的性能&#xff0…...

springcloud各个组件介绍

Spring Cloud 是一系列框架的集合,它基于 Spring Boot 提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)中快速构建一些常见模式的工具。下面是对 Sprin…...

HTML5实现好看的喜庆圣诞节网站源码

HTML5实现好看的喜庆圣诞节网站源码 前言一、设计来源1.1 主界面1.2 圣诞介绍界面1.3 圣诞象征界面1.4 圣诞活动界面1.5 圣诞热度界面1.6 圣诞纪念界面1.7 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的喜庆圣诞节网站源码,圣…...

《学习之道》

《学习之道》主要讲述了以下内容: 学习的原理 大脑的两种认知模式:介绍了专注模式和发散模式。专注模式适合集中精力解决具体问题、进行深度理解和记忆推理,但长时间使用易疲惫和陷入思维定式;发散模式则让大脑在更广泛的认知网…...

【Unity3D】ECS入门学习(十一)ComponentSystem、JobComponentSystem

ComponentSystem&#xff1a;仅支持主线程执行&#xff0c;不支持多线程&#xff0c;并且无法使用SystemBase介绍的扩展方法。 using Unity.Entities; using Unity.Transforms; using Unity.Mathematics;/// <summary> /// 仅主线程执行&#xff0c;不支持多线程 /// &l…...

力扣刷题:栈和队列OJ篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 1.用队列实现栈&#xff08;1&#xff09;题目…...

XGPT用户帮助手册

文章目录 2024 更新日志2024.12.272024.12.29 摘要 本文详细介绍了XGPT软件的功能及发展历程。XGPT是一款融合了当前最先进人工智能技术的多模态智能软件&#xff0c;专为国内用户优化设计。除了强大的智能问答功能外&#xff0c;XGPT还结合日常办公和科学研究的需求&#xff0…...

Oracle 数据库 dmp文件从高版本导入低版本的问题处理

当前有个需求是将oracle 19c上的数据备份恢复到oracle 11g上使用。我们通过exp命令远程进行备份&#xff0c;然后通过imp进行恢复时出现IMP-00010: not a valid export file, header failed verification报错。 这是数据库版本问题&#xff0c;在使用exp命令导出的时候使用的客…...

ShardingSphere-Proxy分表场景测试案例

快速入门文章参考&#xff1a;《ShardingSphereProxy:快速入门》 基于K8S部署文章参考&#xff1a;《基于K8s部署ShardingSphere-Proxy》 基于golang的测试用例参考&#xff1a;《ShardingSphere-Proxy 连接实战&#xff1a;从 Golang 原生 SQL 到 GORM 的应用》 背景 我们…...

学技术学英文:Tomcat的线程模型调优

导读&#xff1a; tomcat 线程调优关键需要理解下面这几个参数&#xff1a; 1. maxConnections 描述&#xff1a;指定服务器能够同时接受和处理的最大连接数。也就是说&#xff0c;服务器在任何时候都能处理的最大并发连接数。作用&#xff1a;限制服务器在任何给定时间点能…...

创建flutter项目遇到无法连接源的问题

Flutter 环境信息 Flutter版本: 3.19.4 (channel stable) Framework: revision 68bfaea224 (2024-03-20) Engine: revision a5c24f538d Dart: 3.3.2 DevTools: 2.31.1 项目基本信息 项目路径: D:\F\luichun 域名: www.luichun.com.cn 支持平台: android, web, windows 项目创…...

MAC系统QT图标踩坑记录

MAC系统QT图标踩坑记录 1. 准备图标1.1 方法一&#xff1a;下载准备好的图标1.2 方法二&#xff1a;自己生成图标1.2.1 准备一个png文件1.2.2 用sips生成不同大小的图片1.2.3 用iconutil生成图标文件 2. 配置图标2.1. 把图标改命成自己想要的名字&#xff0c;如icon.icns&#…...

TF-IDF(Term Frequency-Inverse Document Frequency)详解:原理和python实现(中英双语)

中文版 TF-IDF算法详解&#xff1a;理解与应用 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是信息检索与文本挖掘中常用的算法&#xff0c;广泛应用于搜索引擎、推荐系统以及各种文本分析领域。TF-IDF的核心思想是通过计算一个词在文档中的重要…...

【竞技宝】CS2:HLTV2024职业选手排名TOP15-xantares

北京时间2024年12月30日&#xff0c;HLTV年度选手排名正在持续公布中&#xff0c;今日凌晨正式公布了今年的TOP15选手为EternalFire战队的xantares选手。 选手简介 xantares是一名来自于土耳其的CS职业选手&#xff0c;出生于1995年&#xff0c;今年已经29岁。早在2012年&…...

Spring-kafka快速Demo示例

使用Spring-Kafka快速发送/接受Kafka消息示例代码&#xff0c;项目结构是最基础的SpringBoot结构&#xff0c;提前安装好Kafka&#xff0c;确保Kafka已经正确启动 pom.xml&#xff0c;根据个人情况更换springboot、java版本等 <?xml version"1.0" encoding&qu…...

客户案例:基于慧集通集成平台,打通屠宰管理系统与用友U8C 系统的全攻略

一、引言 本原型客户成立于2014年&#xff0c;是一家集饲草种植、肉牛养殖、精深加工、冷链物流、餐饮服务于一体的大型农牧综合体。公司下设三个子公司分别涵盖农业、畜牧业、肉制品加工业与餐饮物流服务业。公司严格按照一二三产业融合发展要求&#xff0c;以肉牛产业化为支…...

模型 九屏幕分析法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。九屏幕法&#xff1a;全方位分析问题的系统工具。 1 九屏幕分析法的应用 1.1 新产品研发的市场分析 一家科技公司计划开发一款新型智能手机&#xff0c;为了全面评估市场潜力和风险&#xff0c;他们…...

Qanything 2.0源码解析系列6 PDF解析逻辑

Qanything 2.0源码解析系列6: PDF解析逻辑 type: Post status: Published date: 2024/12/04 summary: 深入剖析Qanything是如何拆解PDF的,核心是pdf转markdown category: 技术分享 原文:www.feifeixu.top 😀 前言: 在前面的文章中探究了图片是怎么进行解析的,这篇文章对…...

MAC系统QT Creator的快捷键

安装好QT Creator后使用了一段时间&#xff0c;真是越用越难受&#xff0c;只想说&#x1f5d1;️。。。 找一圈qt creator的快捷键 0. 快捷键界面 这里的搜索真的是…无语&#xff0c;不考虑是人查找吗&#xff1f;&#xff1f; 1. 代码前后浏览 2. 移动代码 3. 半自动导入…...

【深度学习】多目标融合算法—样本Loss提权

目录 一、引言 二、样本Loss提权 2.1 技术原理 2.2 技术优缺点 三、总结 一、引言 在朴素的深度学习ctr预估模型中&#xff08;如DNN&#xff09;&#xff0c;通常以一个行为为预估目标&#xff0c;比如通过ctr预估点击率。但实际推荐系统业务场景中&#xff0c;更多是多…...

三个00后给母校捐了“20亿”,全网炸了——结果这20亿可能就值几百块?

整件事最魔幻的地方在于&#xff1a;你第一眼看到“20亿”&#xff0c;脑子里自动补上的单位是“人民币”。然后一算账&#xff0c;发现可能连捐的那个展示牌都不如。这事到底是怎么回事&#xff1f;前几天&#xff0c;郑州西亚斯学院搞了一场挺隆重的捐赠仪式。三个00后校友—…...

从审稿人到作者:我审了10篇论文后,总结出的5个投稿避坑指南和3个加分项

从审稿人到作者&#xff1a;10篇论文审阅经验提炼的5大避坑策略与3个关键加分项 第一次收到审稿邀请时&#xff0c;我正对着自己第三篇被拒的论文修改意见发呆。这种身份错位带来的震撼&#xff0c;让我开始系统记录审稿笔记——如今这些笔记已形成超过2万字的"审稿人思维…...

从理论到代码:一步步拆解单纯形法在MATLAB中的核心‘旋转运算’

从理论到代码&#xff1a;一步步拆解单纯形法在MATLAB中的核心‘旋转运算’ 单纯形法作为线性规划领域最经典的算法之一&#xff0c;其理论优雅性与计算高效性在数学优化中独树一帜。然而&#xff0c;当我们将教科书中的表格计算转化为编程语言实现时&#xff0c;往往会遇到一个…...

Taotoken多模型聚合在批量内容生成任务中的稳定性观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken多模型聚合在批量内容生成任务中的稳定性观察 1. 任务背景与挑战 在涉及大规模、长时间运行的内容生成任务中&#xff0c…...

收藏必备!VSCode 超详细入门教程 从安装到精通

系统下载 1、KALI安装版 https://pan.quark.cn/s/483c664db4fb 2、KALI免安装版 https://pan.quark.cn/s/23d4540a800b 3、下载所有Kali系统 https://pan.quark.cn/s/7d8b9982012f 4、KALI软件源 https://pan.quark.cn/s/33781a6f346d 5、所有Linux系统 https://pan.…...

Taotoken API密钥管理与访问控制功能初体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken API密钥管理与访问控制功能初体验 1. 引言 在将大模型能力集成到实际应用或团队协作流程中时&#xff0c;API密钥的管理…...

FPGA资源吃紧?看Artix7-35T如何“精打细算”实现MIPI视频解码与HDMI输出

Artix7-35T极限优化&#xff1a;在资源受限FPGA上实现MIPI-HDMI全流程处理 当医疗内窥镜或工业检测设备需要嵌入式图像处理时&#xff0c;工程师们常常面临一个残酷的现实&#xff1a;既要实现复杂的MIPI视频处理流水线&#xff0c;又不得不使用Artix7-35T这类入门级FPGA。这颗…...

5.20 明天见!拿好这份参会指南|AIGC2026峰会

组委会 发自 凹非寺量子位&#xff5c;公众号 QbitAI明天5月20日&#xff0c;09:30&#xff0c;中国AIGC产业峰会准时开场。提前查好路况&#xff0c;定好闹钟&#xff0c;我们现场见。所有人&#xff0c;马上AI起来。明天聊什么&#xff1f;议程帮你划重点上午场&#xff1a;A…...

打破学术壁垒:PDFMathTranslate如何让你的英文论文“说“中文?

打破学术壁垒&#xff1a;PDFMathTranslate如何让你的英文论文"说"中文&#xff1f; 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/Oll…...

PIC24F Curiosity开发板实战:从MCC配置到低功耗设计

1. 项目概述与核心价值最近在做一个需要兼顾低功耗和实时控制的小型嵌入式项目&#xff0c;选型时又一次把目光投向了Microchip的PIC24F系列MCU。说实话&#xff0c;对于很多从8位机过渡过来的工程师&#xff0c;或者在校学生、创客爱好者来说&#xff0c;直接上手一款16位单片…...