nginx-检查try_files是否成功

nginx-检查try_files是否成功

我正在尝试对服务器进行一些故障排除,并希望在 nginxtry_files成功找到文件的情况下设置条件标头。我目前已将 nginx 设置为 Apache 的反向代理。

目前,我有以下位置块:

    location / {
        try_files $uri $uri/ /index.php?$args;
        add_header X-Cache-Status $upstream_cache_status;
        add_header X-Cache-Bypass $skip_reason;
        add_header X-Handled-By   $customhandledby;
        add_header X-Cache-Bypass $skip_reason;
    }

    location ~ \.php$ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080$request_uri;
        add_header Front-End-Https  on;
        proxy_redirect off;
        proxy_buffering on;
        proxy_cache edge-cache;
        proxy_cache_revalidate on;
        proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
        proxy_cache_bypass $skip_cache;
        proxy_no_cache $skip_cache;
        proxy_cache_valid 200 301 302 500m;
        proxy_cache_valid 404 1m;
        add_header X-Cache-Status $upstream_cache_status;
        add_header X-Cache-Bypass $skip_reason;
        add_header X-Handled-By $customhandledby;
    }

我希望的是,add_header X-Handled-By $customhandledby;如果成功则添加标头“X-Handled-By nginx” try_files,如果不成功则应该显示“X-Handled-By Apache” - 这样我知道哪个服务器正在处理该请求。

如果我使用以下map内容proxy_buffering on;,效果很好:

map $upstream_cache_status $customhandledby {
    ~HIT "nginx";
    ~MISS "Apache";
    ~BYPASS "Apache";
    ~EXPIRED "Apache";
}

但如果我转身proxy_buffering off;,我就会丢失那个请求的标题认为由 nginx 处理吗?

我可以做些什么来显示“X-Handled-By正确的网络服务器“不依赖 nginx 缓存 Apache 请求?

相关内容