我正在尝试对服务器进行一些故障排除,并希望在 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 请求?