nginx:访问日志控制,同时保持内部重定向到 WordPress

nginx:访问日志控制,同时保持内部重定向到 WordPress

我创建了一个带有永久链接的 WordPress 页面,http://domain.tld/health_status用于 WordPress 健康监测。该页面访问频繁,因此我不希望这些请求出现在我的访问日志中。

所有 WordPress 页面的基本“重写规则”是:

location / {
    try_files $uri $uri/ /index.php?q=$args;
}

现在,在同一层面上,我尝试

location /health_status {
    access_log off;
    #try_files $uri $uri/ /index.php?q=$args;
    }

从 nginx位置文档

文字字符串与查询的开头部分匹配 - 将使用最具体的匹配

/health_status比 更具体/,因此当我请求 时,此块会采取行动http://domain.tld/health_status

注释掉该try_files行(如上)后,请求不会显示在访问日志中,好极了,但显然我只是收到 404 错误,因为 nginx 没有将此请求重定向到 WordPress。

当该线路处于活动状态时,会发生try_files对 WordPress 的内部重定向,并且WordPress 页面会显示在浏览器中。但是,内部重定向之后,阻止不再起作用,请求最终会进入访问日志。index.php/health_statuslocation /health_status

如何彻底解决这个问题?我现在是否必须添加另一个与/index.php?q=healthstatuswhatever内部重定向后发生的实际请求匹配的块?

谢谢!

答案1

您应该对发往 WordPress 的请求使用命名位置。例如:

location ~ \.php$ {
    try_files $uri =404;

    fastcgi_ ### fastcgi params and other config for PHP go here
}

location @wordpress {
    try_files $uri /index.php;

    fastcgi_ ### fastcgi params and other config for WP go here
}

location / {
    try_files $uri $uri/ @wordpress;
}

location /health_status {
    access_log off;
    try_files $uri $uri/ @wordpress;
}

此示例不完整且可能不安全;它仅演示如何解决您的问题。请务必妥善保护您的 Web 服务器。

相关内容