想象一下这个场景:你们公司新上线的财务系统需要连接MySQL数据库,但直接暴露数据库端口就像把金库大门开在马路牙子上——太危险了,开发团队需要访问,运维团队需要维护,第三方系统还要对接,难道要给每个人都发数据库账号?这时候,Nginx的TCP代理功能就像个专业的"门房大爷",既能帮MySQL挡掉闲杂人等,又能精准放行该进的人。
# 检查Nginx是否编译了stream模块 nginx -V 2>&1 | grep -o with-stream
如果没输出,需要重新编译Nginx加上--with-stream
参数,用OpenResty的朋友可以直接跳过这步。
在nginx.conf
的主配置区域(不是http区块)添加:
stream { # 定义MySQL访问白名单 geo $mysql_whitelist { default 0; 192.168.1.100 1; # 开发部IP 10.0.0.15 1; # 运维跳板机 203.0.113.45 1; # 合作方固定IP } server { listen 3307; # 对外暴露的端口 proxy_pass 192.168.1.200:3306; # 真实MySQL地址 # 门禁检查 if ($mysql_whitelist = 0) { close; # 简单粗暴拒绝连接 } # 高级玩法:返回假响应 # error_log /var/log/nginx/mysql_proxy_error.log; # deny all; # return 444; } }
光有Nginx不够,MySQL自己也该设防:
-- 先给root改个不明显的名字 RENAME USER 'root'@'localhost' TO 'dbadmin'@'localhost'; -- 创建专用代理账户 CREATE USER 'proxy_user'@'192.168.1.200' IDENTIFIED BY 'ComplexP@ssw0rd!2025'; -- 精确授权(按需调整) GRANT SELECT, INSERT ON finance.* TO 'proxy_user'@'192.168.1.200';
测试连接:
# 从白名单IP测试 mysql -u proxy_user -p -h 代理服务器IP -P 3307 # 从非白名单IP测试应该立即被断开
查看Nginx日志:
tail -f /var/log/nginx/error.log
端口迷惑术:
流量指纹混淆:
server { listen 3307; proxy_protocol on; # 启用Proxy协议 proxy_pass mysql_backend; }
动态防火墙联动:
# 在拒绝连接时调用脚本记录攻击IP if ($mysql_whitelist = 0) { access_by_lua_block { os.execute("/usr/local/bin/ban_ip.sh $remote_addr") } close; }
连接池问题:
proxy_timeout
参数或由客户端处理重连性能瓶颈:
worker_processes auto; # 自动匹配CPU核心数 events { worker_connections 10240; # 大连接量场景需要调整 }
SSL加密:
server { listen 3307 ssl; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; proxy_pass mysql_backend; }
健康检查:
upstream mysql_backend { server 192.168.1.200:3306 max_fails=3 fail_timeout=30s; }
日志分析:
# 统计异常连接尝试 grep "closed connection" /var/log/nginx/access.log | awk '{print $3}' | sort | uniq -c | sort -nr
定期审计:
SHOW PROCESSLIST
监控异常查询Nginx代理MySQL就像给数据库穿了件隐身衣,但真正的安全需要多层防护:网络层的IP限制、传输层的加密、应用层的权限控制、再加上完善的监控,没有百分之百的安全,但每多一道防线,攻击者的成本就指数级增长,下次当你看到Nginx,不妨想想它不只是个Web服务器,还是个能保护数据库的"瑞士军刀"。
(配置示例基于Nginx 1.25.x和MySQL 8.0.x版本验证,2025年7月更新)
本文由 迮雅香 于2025-07-31发表在【云服务器提供商】,文中图片由(迮雅香)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/496059.html
发表评论