网站首页 > 技术文章 正文
关注△mikechen△,十余年BAT架构经验倾囊相授!
大家好,我是mikechen睿哥。
Nginx是大型架构的必备技能,下面我重点详解Nginx配置@mikechen
文章来源:mikechen.cc
1. 合理设置worker进程数
Nginx采用Master-Worker进程模型,Master进程负责管理Worker进程,Worker进程负责处理实际的请求。
Worker进程数的设置应根据服务器的CPU核心数来确定,通常设置为CPU核心数的1到2倍。
worker_processes auto;# 自动检测CPU核心数,推荐# worker_processes 4; # 如果你的CPU是4核
2.配置工作连接数
worker_connections 配置项决定了每个工作进程可以同时处理的最大连接数。
最佳实践: 确保这个值足够大,以应对你的流量峰值。
计算公式: 服务器能处理的最大并发连接数 = worker_processes * worker_connections。
events { worker_connections 1024;}
3. 启用gzip压缩
gzip压缩可以显著减小HTTP响应的大小,从而加快页面加载速度。在Nginx中启用gzip压缩非常简单,只需在配置文件中添加以下几行:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml
gzip_proxied any;
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 168k;
gzip_http_version 1.1;
4. 配置浏览器缓存
浏览器缓存可以减少重复请求,从而减轻服务器负担并提高用户体验。通过设置HTTP响应头中的Cache-Control和Expires字段,可以控制浏览器缓存行为。
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d;
access_log off;
}
5. 限制请求体大小
为了防止恶意用户上传过大的文件,Nginx可以限制请求体的大小。
client_max_body_size 100m;
6. 配置SSL/TLS
为您的网站配置SSL/TLS可以加密通信,保护用户数据安全。建议使用Let’s Encrypt等免费SLL证书。
7. 开启HTTP/2
HTTP/2是HTTP协议的最新版本,它在性能方面有显著提升。在Nginx中开启HTTP/2非常简单,只需在listen指令中添加http2参数。
listen 443 ssl http2;
8. 设置连接超时
适当设置连接超时时间可以防止恶意连接长时间占用服务器资源。
client_header_timeout 15s;
client_body_timeout 15s;
send_timeout 15s;
9. 隐藏Nginx版本信息
为了提高安全性,建议隐藏Nginx的版本信息,避免攻击者利用已知漏洞。
server_tokens off;
10. 使用LUA扩展
Nginx可以通过LUA扩展实现更复杂的功能,例如WAF(Web应用防火墙)、API网关等。
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2025-09-24 实战录 | 今天聊聊Nginx反向代理使用
- 2025-09-24 windows下配置代理访问https网站_windows 配置代理
- 2025-09-24 Openresty Tracing 最佳实践_opentracing zipkin
- 2025-09-24 CentOS中Nginx + SpringBoot + FreeSSL.cn 免费HTTPS证书自动续期实战
- 2025-09-24 nginx常用命令及简单配置_nginx用法
- 2025-09-24 性能测试之tomcat+nginx负载均衡_nginx负载均衡 性能
- 2025-09-24 Nginx 笔记_nginx详细教程
- 2025-09-24 业务前端界面报错504排查思路和解决办法
- 2025-09-24 AWS Linux 2023搭建WordPress 安装指南(二)
- 2025-09-24 关于Nginx性能优化的10个小技巧,学到即赚到!
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)