从踩坑到觉醒:为什么我彻底放弃了宝塔 Nginx 的默认配置?
大家好,我是33blog的技术博主。今天想和大家聊聊一个让我又爱又恨的话题——宝塔面板的Nginx默认配置。作为一个用了三年宝塔的老用户,最近我终于下定决心抛弃它的默认规则,这中间的故事值得和大家分享。
1. 那些年我们踩过的坑
记得第一次用宝塔部署WordPress时,我天真地以为”一键安装”就万事大吉了。结果上线第三天,网站就被CC攻击打挂了。查看Nginx日志才发现,宝塔默认的limit_req
配置宽松得像公园长椅——谁都能来坐一坐。
# 宝塔默认的限流配置(节选)
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
10次/秒的请求限制?对于恶意爬虫来说简直就是自助餐厅。更别提默认开启的server_tokens on
,直接把Nginx版本号写在响应头里送给黑客当礼物。
2. 性能优化是个伪命题
宝塔引以为傲的”优化配置”其实藏着不少问题。比如这个缓存设置:
proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=cache_one:200m inactive=1d;
把缓存放在/tmp
目录?服务器重启就清空缓存,这操作让我在流量高峰期体验过山车般的QPS波动。后来我自己测试发现,改用/dev/shm
内存盘后,缓存命中率提升了40%。
3. 安全配置形同虚设
最让我后怕的是SSL配置。宝塔默认的TLS 1.0/1.1支持,还有那个万年不变的ssl_ciphers
列表,去年被安全扫描工具打出了C评级。直到我的阿里云服务器因为弱加密算法被运营商警告,才意识到问题的严重性。
现在我的SSL配置是这样的(仅供参考):
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256...';
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
4. 我的自定义配置方案
现在我的做法是:
- 安装宝塔后第一时间备份默认配置
- 完全重写Nginx主配置文件
- 根据业务需求单独配置每个站点
- 使用Mozilla SSL配置生成器
最近给电商项目做的压力测试表明,自定义配置比默认配置的QPS提升了2.3倍,而且成功防御了多次CC攻击。
5. 给新手朋友的建议
如果你刚开始用宝塔:
- 不要完全相信”自动优化”
- 至少修改这些参数:请求限制、缓存路径、SSL配置
- 善用
nginx -t
测试配置 - 关注
/www/wwwlogs
下的日志文件
说到底,宝塔是个好工具,但默认配置就像外卖的默认辣度——不一定适合每个人的口味。经过这次”配置革命”,我的服务器终于可以安稳睡觉了。大家有什么宝塔使用心得,欢迎在评论区交流!
作者说得太对了,宝塔默认配置真的是个大坑!我们公司之前也被CC攻击搞崩过 😅
看完文章赶紧去检查了下服务器配置,发现真的用了默认TLS1.0,感谢提醒