环境:
服务部署了两台,前后端通过nginx实现交互,服务的负载均衡采用的阿里SLB
问题:
服务器A:nginx/logs下的access.log日志不断输出,且ip号段为100.120.0.0/16和100.121.0.0/16
服务器B:nginx/logs下的access.log/error.log日志不断输出,ip号段为100.120.0.0/16和100.121.0.0/16,并且error.log日志已经将100g磁盘占满。
缘由及方案:
1.1 access.log持续输出:
原因:
阿里控制台SLB默认开启健康监测,会持续按照默认配置发送请求,请求的结果也就会被access.log记录
不过该日志均以极简模式输出(每日100M左右),理论上短期不会对服务器造成太大压力。
解决思路:
1、日志切割,定时清理历史数据(推荐)。
2、修改SLB检测端口、检测路径(有一定风险,不太推荐)
3、日志忽略SLB检测记录(麻烦,不推荐)
4、关闭SLB健康监测(有风险,不推荐)
1.2 error.log 持续输出
原因:
error.log输出的日志重点在于(13:Permission denied)
所以问题出在文件及路由的访问权限上:
SLB进行健康监测,请求打到nginx中所配置的/ 、/index等location模块时被拒绝访问!!
解决思路:
nginx的用户分为“启动用户”和“工作用户”,当使用root用户进行nginx启动且配置文件中的user未配置时:
启动用户为root,工作用户为nobody。
所有的请求打到指定location时便会出现(13:Permission denied)
所以需要在nginx的配置文件中将user配置为启动用户名称,然后重启nginx服务即可。