我正在尝试为 nginx 设置自动站点关闭页面。到目前为止,我有以下内容:
location / {
try_files /sitedown.html @myapp;
}
location @myapp {
...
}
效果很好:如果 sitedown.html 存在,它就为它提供服务,否则它就为应用程序提供服务。但是,我想做的是对 Ajax 请求做出不同的响应,这样它们就不会使 javascript 出错。我相信,使用重写模块,我可以做类似的事情,if ($http_x_requested_with = XMLHttpRequest) {
但我不清楚如何使用它来做我想做的事情。
我希望带有该标头的请求返回一个简单的 JSON 响应,就像"sitedown"
带有适当的 JSON 编码标头一样。除此之外,最好返回503
javascript 可以响应的响应代码。
答案1
如果您的客户端应用程序运行良好,它将在 AJAX 请求中设置 Accept: 标头,以便服务器知道需要 JSON 响应。您可以使用类似这样的方法:
location / {
set $downfile sitedown.html;
if ($http_accept ~* application/json) {
set $downfile sitedown.js;
}
try_files $downfile @myapp;
}