资讯专栏INFORMATION COLUMN

调试 Nginx 的配置

zhunjiee / 2100人阅读

摘要:调试的配置标签空格分隔调试配置注该文原文是默认,仅仅记录标准错误日志到默认的文件中,或是被指令指定的文件中。重要对于配置文件的任何改变,你都必须测试和重载的配置文件来让变更生效。将记录最大的消息。

调试 Nginx 的配置

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


  

注:该文原文是 Debugging Nginx Configuration

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

我们可以控制许多方面的错误日志,这将帮助我们调试我们 Nginx 配置文件。

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

在我们继续进行之前

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

在我们开始之前,请详细阅读这些官方文章:通常的 Nginx 陷阱,if 是恶魔,location 指令和 Nginx 请求过程。你可能会多带带使用它们来解决你的问题。

  

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

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

仅仅调试 rewrite 规则

大部分时间,你仅仅需要这个,特别是当你看见 404 或是不是期望的页面的时候。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39091.html

相关文章

  • windows 下 Nginx + PHP 配置调试运行

    摘要:与协同工作原理首先,的转发端口与的监听端口需一致。然后将请求映射成请求,通过对应端口向发送。获取并处理请求后,通过对应端口反馈给处理后的数据,将数据输出到浏览器,一次请求结束。 A. nginx 与 php 协同工作原理: 首先,nginx 的转发端口 与 php 的监听端口需一致。然后 nginx 将 http 请求映射成 fastcgi 请求,通过对应端口向 php 发送。php ...

    yhaolpz 评论0 收藏0
  • windows 下 Nginx + PHP 配置调试运行

    摘要:与协同工作原理首先,的转发端口与的监听端口需一致。然后将请求映射成请求,通过对应端口向发送。获取并处理请求后,通过对应端口反馈给处理后的数据,将数据输出到浏览器,一次请求结束。 A. nginx 与 php 协同工作原理: 首先,nginx 的转发端口 与 php 的监听端口需一致。然后 nginx 将 http 请求映射成 fastcgi 请求,通过对应端口向 php 发送。php ...

    keelii 评论0 收藏0
  • 单点登录nginx代理及开发环境调试配置

    摘要:最近做项目,遇到单点登录,方法是在前端做代理。调通之后开始思考如何在本地开发环境调试单点登录这一功能。 最近做项目,遇到单点登录,方法是在前端做nginx代理。应用系统需要配合做如下调整:1、使用*.顶级域名访问,确保可以和KAM共享cookie2、对来自Nginx代理的访问放开登录认证(安全起见,对来自其他IP的访问应该禁止)3、应用系统从请求头kam_remote_user中读取登...

    go4it 评论0 收藏0
  • 微信分享在本地调试配置nginx将本地ip映射为公众号配置域名

    摘要:微信分享在本地调试的时候会出现域名无效的报错所以配置了一个在微信开发者工具中调试首先声明我是系统在文件夹下更改文件在最后一行添加上这里是你想配置的域名然后安装更改文件夹下的你代理的本地这样保存后我是项目需要在项目中设置然后重新启 微信分享在本地调试的时候会出现域名无效的报错:errMsg:config:fail,Error: invalid url domain所以配置了一个nginx...

    KitorinZero 评论0 收藏0
  • 微信分享在本地调试配置nginx将本地ip映射为公众号配置域名

    摘要:微信分享在本地调试的时候会出现域名无效的报错所以配置了一个在微信开发者工具中调试首先声明我是系统在文件夹下更改文件在最后一行添加上这里是你想配置的域名然后安装更改文件夹下的你代理的本地这样保存后我是项目需要在项目中设置然后重新启 微信分享在本地调试的时候会出现域名无效的报错:errMsg:config:fail,Error: invalid url domain所以配置了一个nginx...

    CoderDock 评论0 收藏0

发表评论

0条评论

zhunjiee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<