调试 Nginx 的配置

调试 Nginx 的配置

标签(空格分隔): Nginx 调试 Debuging 配置html


注:该文原文是 Debugging Nginx Configurationnginx

默认,Nginx 仅仅记录标准错误日志到 Nginx 默认的 error 文件中,或是被 error_log 指令指定的文件中。git

咱们能够控制许多方面的错误日志,这将帮助咱们调试咱们 Nginx 配置文件。github

重要:对于 Nginx 配置文件的任何改变,你都必须测试和重载 Nginx 的配置文件来让变动生效。在 Ubuntu 系统,你能够简单的运行 nginx -t && service nginx reload 命令。服务器

在咱们继续进行以前

在你复制粘贴任何 Nginx 配置以前,确保你移除了你不想要的代码。而且,每次你升级 Nginx,也请使用最新版 Nginx 提供的更新你的配置文件。学习

在咱们开始以前,请详细阅读这些官方文章:一般的 Nginx 陷阱if 是恶魔location 指令Nginx 请求过程。你可能会单独使用它们来解决你的问题。测试

注:5 星推荐上面的几篇官方文章。网站

好吧,看起来你须要一些严谨的调试,让咱们开始!google

仅仅调试 rewrite 规则

大部分时间,你仅仅须要这个,特别是当你看见 404 或是否是指望的页面的时候。lua

server {
        #other config
        error_log    /var/logs/nginx/example.com.error.log;
        rewrite_log on;
        #other config
}

rewrite_log 仅仅是一个标志。当打开它,它将发送全部的 rewrite 相关的日志信息到 error_log 文件中,使用 [notice] 级别。

所以,一旦你打开了它,在 error_log 中查看日志信息。

设置 Nginx 日志的调试级别

下面的示例增长了 debug 级别,记录在指定的路径。

server {
        #other config
        error_log    /var/logs/nginx/example.com.error.log debug;
        #other config
}

debug 将记录最大的消息。你能够在这里看到其余值

注意:在一个高流量的网站,不要忘记恢复 error_log 日志的调试级别,error_log 可能会吃光你全部的可用磁盘空间,并引发服务器 crash。

设置 Nginx 仅仅记录来自于你的 IP 的错误

当你设置日志级别成 debug,若是你在调试一个在线的高流量网站的话,你的错误日志可能会记录每一个请求的不少消息,这样会变得毫无心义。

为了促使 Nginx 记录仅仅来自于你的 IP 的错误日志,添加如下行到配置文件 /etc/nginx/nginx.confevents{..}

确保使用你本身的公网 IP 替换 1.2.3.4,你能够在这里找到你的公网 IP

events {
        debug_connection 1.2.3.4;
}

你能够在这里查看更多的细节

Nginx 的 Location 指定错误日志

在 Nginx 中,咱们使用 location{..}

为了调试一个应用的部分,你能够在一个或多个 location{..} 中指定 error_log 指令。

server {
        #other config
        error_log    /var/logs/nginx/example.com.error.log;
        location /admin/ { 
        error_log /var/logs/nginx/admin-error.log debug; 
    }         
    #other config
}

以上将仅仅调试你应用的 /admin/ 部分,错误日志将被记录到一个不一样的文件中。

你能够组合使用 debug_connectionerror_log 来获取更多的控制调试日志。

使用 Nginx 的 HttpEchoModule 模块调试

HttpEchoModule 是一个独立的 Nginx 模块,它能够帮助你彻底以不一样的方式调试。这个模块默认没有被 Nginx 绑定。

你须要从新编译 Nginx 来使用这个模块。对于 Ubuntu 用户,这是一个快速启动仓库

我最近在使用它,我还用它来调试项目。当我作完的时候,我将写一篇文章详细讲述。

为 Nginx 的配置使用 Perl/Lua 语言

若是你仍然有困难的时间,而且你按期配置你的 Nginx,应该考虑使用其余语言来处理你的 Nginx 配置。

这里有关于 Perl 语言Lua 语言的 Nginx 模块。

我很是不善于学习新的语言,不会有太多的机会写更多关于这方面的东西,可是若是你知道或是能够很是容易学习 Perl/Lua,这会很是有趣。

扩展阅读

  • How Nginx’s location-if works!
  • Maintaining, Optimizing & Debugging WordPress-Nginx Setup
相关文章
相关标签/搜索