Nginx问题及解决方案

提示错误信息

nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
2016/09/13 19:08:56 [emerg] 6996#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory)

原因分析:nginx/目录下没有logs文件夹

 

 

 解决方法:

mkdir logs
chmod 700 logs

正常情况的信息输出:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

 

启动成功后打不开链接

1.ping

2telnet 端口(CentOS7:验证端口  firewall-cmd --query-port=80/tcp)

  下面我们开启80端口:
  firewall-cmd --add-port=80/tcp --permanent
  #重启防火墙
  systemctl restart firewalld
  --permanent #永久生效,没有此参数重启后失效

 

配置nginx开机自启动

vim /etc/rc.d/rc.local

 

 

pid问题

问题描述
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid" # pid丢 失
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) # 文件或者文件夹丢失
解决方法
如果文件夹缺失,则创建该文件夹
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 执行重新启动命令,则会生成nginx.pid文件

nginx日志切割

 第一种
nginx的日志分为访问日志(access.log)和错误日志(error.log),日志过大会影响nginx的性能,也不利于日志的分析,所以需要将日志分割处理。
日志常见的配置参数:
$remote_addr 客户端的ip地址(代理服务器,显示代理服务ip)
$remote_user 用于记录远程客户端的用户名称(一般为“-”)
$time_local 用于记录访问时间和时区
$request 用于记录请求的url以及请求方法
$status 响应状态码,例如:200成功、404页面找不到等。
$body_bytes_sent 给客户端发送的文件主体内容字节数
$http_user_agent 用户所使用的代理(一般为浏览器)
$http_x_forwarded_for 可以记录客户端IP,通过代理服务器来记录客户端的ip地址
$http_referer

可以记录用户是从哪个链接访问过来的 

1. 进入/usr/local/nginx/sbin目录下,并创建shell文件 
cd /usr/local/nginx/sbin 
touch cut_nginx_log.sh
chmod +x cut_nginx_log.sh
2. 编辑shell文件,编写日志切割命令 
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path="/usr/local/nginx/logs/historyLog"
logPath="/usr/local/nginx/logs/"
record_time=$(date -d "yesterday" +"%Y-%m-%d")
#创建备份目录
mkdir -p ${logs_path}/
#将日志移动到上面的目录中
mv ${logPath}/access.log ${logs_path}/access、access.${record_time}.log
mv ${logPath}/error.log ${logs_path}/error、error.${record_time}.log
#nginx重读配置文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) 

第二种

1. 安装定时任务
yum install crontabs
2. 添加到crontab定时任务中 
crontab -e 0 0 * * * bash /usr/local/nginx/sbin/cut_nginx_log.sh #将于每天凌晨0点0分将 nginx日志重命名为昨天的日期格式,并重新生成今天的新日志
3. 重启crontab服务 
/sbin/service crond restart //重启服务 
/sbin/service crond reload //重新载入配置
常用定时任务命令 
  CentOS6上的cron命令: 
service crond start // 启动服务
service crond stop // 关闭服务
service crond restart // 重启服务
service crond reload // 重新载入配置
service crond status // 查看状态
crontab -e // 编辑任务
crontab -l // 查看任务列表 
  CentOS7上的cron命令: 
systemctl start crond.service/crond start // 启动服务
systemctl stop crond.service/crond stop // 关闭服务
systemctl restart crond.service/crond restart // 重启服务
systemctl reload crond.service/crond reload // 重新载入配置
systemctl status crond.service/crond status // 查看状态
  crontab命令介绍
 
星期几 年(可选) 
取值范围
0-59
0-23 
1-31 
1-12
1-7
2021/2022/.....
常用表达式示例: 
*/1 * * * * // 每分钟执行 
59 23 * * * // 每日凌晨(每天晚上23:59)执行
0 1 * * * // 每天1点执行
0 0 * * 1 // 每周一执行

 

运维页面

使用错误码判断是否跳转到运维页面 
状态码
含义
500
服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问
题都会在服务器的程序码出错时出现。 
501
服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持
其对任何资源的请求。 
502
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 
503
由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将
在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个 Retry-After 头用
以标明这个延迟时间。如果没有给出这个 Retry-After 信息,那么客户端应当以处理500响
应的方式处理它。 注意:503状态码的存在并不意味着服务器在过载的时候必须使用
它。某些服务器只不过是希望拒绝客户端的连接。 
504
作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的
服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。 注意:
某些代理服务器在DNS查询超时时会返回400或者500错误
505
服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。这暗示着服务器不能或不愿使
用与客户端相同的版本。响应中应当包含一个描述了为何版本不被支持以及服务器支持哪
些协议的实体。 
506
由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协
商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的
重点。 
207
服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
209
服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。 
510
获取资源所需要的策略并没有没满足。(RFC 2774) 

 

posted @ 2022-04-21 17:49  Dabo丶  阅读(1172)  评论(0编辑  收藏  举报