1、首先检查自身nginx服务是否开启,再检查服务是否可以正常开启、如果服务宕掉,就重启服务。
2、配置文件都没出错,可是无法正常访问,都调到一个默认页面
原因:可能本机存在两个nginx
处理:查看本机是否只有唯一nginx,注意查看nginx的主进程号
3、出现502 gat way 、504timeout
5xxx的代码表示服务器出现的错误
处理:①502报错和fpm-php.conf 的配置文件有关系,进去仔细查看配置文件是否出错
②504报错和nginx.conf配置文件有关系,比如修改缓存时间,大小等,还有一个fastcgi_read_timeout选项,次选项时设置在时间段内,不论php-cgi请求是否完成,都会关闭,还要注意一下web站点的php最大请求时间为多少,如果设置少了也会报504的错误。
4、403未授权被禁止访问报错、413上传文件大报错
4xx代码,通常来说表示客户端类的错误
原因:①403是nginx程序用户无权限访问web目录文件、nginx需要访问目录,但是autoindex选项被关闭②413是因为上传文件的大小已经超过了nginx所配置的大小
处理:①403 授予nginx程序用户权限读取web目录、设置autoindex目录为on
②在nginx.conf增加client_max_body_size设置,默认值为1M,可以增加到8M提高文大小限制、如果运行的是php,那么还要检查php.ini,这个大小的size要和php.ini中的值大小相同,这样提交数据时就不会出现错误
4、301为永久重定向、302为临时重定向、304表示冲缓存中响应,
出现3xx的代码,通常为重定向类状态码,如果访问某域名时,出现跳转问题,那么就要检查nginx的配置,
①查看rewrite规则是否合理
②location是否出现优先级问题
定位:
正常报错,首先查看nginx的报错日志
50x的错误都是服务端错误,一定不要到nginx的日志中去查:(1) 去框架的异常日志中去找(如果异常被catch住了);(2) 到php的error_log中去找
5、服务器负载过高告警,网页打开变慢
原理、定位:①登录服务器,使用top命令查看cpu的io,查看是否负载过高
②使用iotop -o查看nginx的写io是否特别大,如果nginx的io特别大并且在top时查看到nginx的进程状态为D,那么表示nginx的等待io已经为僵死状态
③已知nginx进行大量的写操作导致系统负载过高,还要继续查出具体的nginx在写什么文件导致压力过高,进行查询nginx worker进程pid,使用lsof -p pid;列出系统文件及日志文件,如果有fastcgi_temp/xxxxxx文件,那么可能是这些文件导致的负载过高
④使用strace -p pid;(此命令是跟踪pid进程的系统调用)追踪,发现nginx进程对某个fd进行大量的写操作,与lsof命令累出来的文件正好一致,使用iostat 1输出的大量写io的分区也与fastcgi_temp所在分区相符合
⑤也有可能是外部大量上传大文件给fpm-php,这时就需要使用小公举来查看实时流量(EZHTTP小工具)
处理:把fastcgi_temp指向/dev/shm,(/dev/shm 目录不在内存里,直接映射在内存里)然后重启nginx(还有问题就找开发!!)