社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

Nginx如何性能优化?这几个方法你都知道吗?

鸭哥聊Java • 2 月前 • 87 次点击  

Nginx 作为一个高性能的 Web 服务器和反向代理服务器,性能优化是我们日常运维和开发中不可避免的一个话题。

许多开发者安装完 Nginx 后就直接使用,但如果不进行针对性的优化,可能会在高并发、大流量的情况下遇到性能瓶颈。今天我们就来聊聊几个 Nginx 性能优化的关键点。

首先,在 Nginx 配置层面,我们可以从进程管理、连接数、协议优化等方面入手。Nginx 的 worker_processes 参数默认是 auto,这个值通常应该设置为 CPU 核心数,以便充分利用多核处理能力。

worker_connections 控制每个 worker 进程能同时处理的最大连接数,这个值应根据服务器的资源进行合理调整。

worker_processes auto;
events {
worker_connections 10240;
}

此外,Nginx 近年来已经完全支持 HTTP/2,开启后可以带来多路复用、头部压缩等优势,提高网页加载速度。




    
server {
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}

然后,缓存的使用可以极大降低后端服务器的负载。Nginx 提供了 proxy_cache 来缓存后端服务器的响应,合理配置缓存策略能够减少重复请求,提高性能。

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
}
}

文件缓存的层级和大小要根据具体的业务需求来配置,防止缓存命中率过低或者磁盘空间占用过大。

在传输优化方面,Nginx 内置了 Gzip 和 Brotli(需要额外模块)两种压缩方式,可以显著减少响应体大小,提高传输速度。

gzip on;
gzip_types text/plain application/xml application/json application/javascript text/css;
gzip_comp_level 6;
gzip_min_length 256;

不同的 gzip_comp_level 值影响 CPU 占用和压缩比,通常 5-6 之间可以取得较好的平衡。

安全性优化也是我们必须要考虑的一部分。Nginx 默认会在错误页面和 HTTP 头信息中显示版本号,这可能会带来潜在的安全风险,可以通过 server_tokens off; 进行隐藏。

server_tokens off;

如果想要更彻底地隐藏版本信息,甚至可以修改 Nginx 源码并重新编译,但一般来说,通过配置文件隐藏已经足够。

日志和监控也是 Nginx 运行过程中需要重点关注的部分。Nginx 的 access.logerror.log 记录了服务器的请求情况和错误信息,结合 ELK(Elasticsearch + Logstash + Kibana)或 Prometheus + Grafana,可以实时分析和监控流量、错误率等关键指标。

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

在系统层面,我们也可以做一些优化。例如,提高文件描述符的最大数量,防止 Nginx 在高并发时因为文件句柄数受限而崩溃。

echo "fs.file-max = 65535" >> /etc/sysctl.conf
sysctl -p

另外,在高并发场景下,优化 TCP 连接队列大小,可以减少连接超时问题。

echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf
sysctl -p

Nginx 还可以通过负载均衡策略来分担服务器压力,例如 least_conn(最少连接)策略,能让请求尽可能均衡地分布在后端服务器上。

upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}

对于健康检查,我们可以使用 nginx_upstream_check_module,定期探测后端服务器的健康状况,避免将流量分发给不可用的服务器。

upstream backend {
server backend1.example.com check;
server backend2.example.com check;
}

以上就是 Nginx 优化的一些常见方法,包括配置优化、缓存策略、压缩策略、安全性优化、系统优化和负载均衡。

对于 Java 开发者来说,Nginx 通常和 Spring Boot、Spring Cloud 等框架一起使用,合理的 Nginx 优化能够极大提高服务的稳定性和性能。

最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek


同时,也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。

对编程、职场感兴趣的同学,可以链接我,微信:yagebug  拉你进入“程序员交流群”。
🔥鸭哥私藏精品 热门推荐🔥

鸭哥作为一名老码农,整理了全网最全《Java高级架构师资料合集》
资料包含了《IDEA视频教程》 《最全Java面试题库》、最全项目实战源码及视频》及《毕业设计系统源码》总量高达 650GB 。全部免费领取!全面满足各个阶段程序员的学习需求。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/179759
 
87 次点击