首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次 Nginx 调试

记一次 Nginx 调试

作者头像
kifuan
发布2022-10-24 17:10:08
2350
发布2022-10-24 17:10:08
举报
文章被收录于专栏:随便写写-kifuan随便写写-kifuan

背景

一般来说 Nginx 使用起来挺简单,不出意外的话应该没什么问题,但今天我就出意外了。

我的配置很简单,如下:

server {
  server_name www.kifuan.me;
  root /web/www;
  index index.html;

  location / {
    try_files $uri $uri/ =404;
  }
}

但怎么访问就是死活就是报 404,于是就有了今天这篇文章。

修改日志等级

我演示的用户都是非 root,如果你是 root 就不用加那么多 sudo 了。我主要是怕误操作。

首先查找配置文件的路径:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

打开配置文件,找到以下几行:

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

在这里,我们需要把 error_log 的级别调到 debug

error_log /var/log/nginx/error.log debug;

不要忘了重新加载以下 Nginx

$ sudo nginx -s reload

查看日志

再次访问出错的地址,然后查看 error.log 中的内容,我这里是找到了下面几行(里面的一些星号是我自己写的,原来是 IP 地址之类的):

$ sudo cat /var/log/nginx/error.log
...
2022/09/10 03:59:17 [debug] 69714#69714: *2047 http script var: "/"
2022/09/10 03:59:17 [debug] 69714#69714: *2047 trying to use file: "/" "/web/www/"
2022/09/10 03:59:17 [crit] 69714#69714: *2047 stat() "/web/www/" failed (13: Permission denied), client: ***, server: www.kifuan.me, request: "GET / HTTP/1.1", host: "www.kifuan.me"
2022/09/10 03:59:17 [debug] 69714#69714: *2047 http script var: "/"
2022/09/10 03:59:17 [debug] 69714#69714: *2047 trying to use dir: "/" "/web/www/"
2022/09/10 03:59:17 [crit] 69714#69714: *2047 stat() "/web/www/" failed (13: Permission denied), client: ***, server: www.kifuan.me, request: "GET / HTTP/1.1", host: "www.kifuan.me"
2022/09/10 03:59:17 [debug] 69714#69714: *2047 trying to use file: "=404" "/web/www=404"
2022/09/10 03:59:17 [debug] 69714#69714: *2047 http finalize request: 404, "/?" a:1, c:1
2022/09/10 03:59:17 [debug] 69714#69714: *2047 http special response: 404, "/?"
2022/09/10 03:59:17 [debug] 69714#69714: *2047 http set discard body
2022/09/10 03:59:17 [debug] 69714#69714: *2047 xslt filter header
2022/09/10 03:59:17 [debug] 69714#69714: *2047 HTTP/1.1 404 Not Found
Server: nginx/1.18.0 (Ubuntu)
Date: Sat, 10 Sep 2022 03:59:17 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Content-Encoding: gzip
...

可以注意到,它是因为访问 /web/www 的权限不足才报错,那么我们可以这么办:

$ sudo chmod -R 777 /web/www

再次访问我就没问题了。

改回原来的日志等级

Bug 修完了,现在该还原了。打开配置文件,把之前添加的 debug 去掉,然后重新加载 Nginx

$ sudo nginx -s reload

错误产生原因

我之前是用 root 用户创建的这个文件夹,之后就忘了这码事了,所以 Nginx 运行的时候才报的权限不足。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 修改日志等级
  • 查看日志
  • 改回原来的日志等级
  • 错误产生原因
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档