nginx条件414错误\u页面

nginx条件414错误\u页面,nginx,Nginx,我的目标是,如果用户请求的URI超过服务器允许的最大值,则创建不同的414错误页面。我已经在我的应用程序中设置了3个414错误页面,格式如下414.html,414.json,414.xml 我希望默认情况下显示html页面,但如果请求是通过json或xml发出的,我希望为指定格式的相关414页面提供服务 以下是迄今为止我对nginx配置文件所做的补充 server { ... map $http_accept $my_file_type { default

我的目标是,如果用户请求的URI超过服务器允许的最大值,则创建不同的414错误页面。我已经在我的应用程序中设置了3个414错误页面,格式如下
414.html
414.json
414.xml

我希望默认情况下显示html页面,但如果请求是通过json或xml发出的,我希望为指定格式的相关414页面提供服务

以下是迄今为止我对nginx配置文件所做的补充

server {
  ...

  map $http_accept $my_file_type {
    default              "html";
    "~*application/json" "json";
    "~*application/xml"  "xml";
  }

  error_page 414 /414.$my_file_type;
  location = /414.$my_file_type {
    log_format my_format '$http_accept -- $my_file_type -- $request_filename';
    access_log /var/log/nginx/access.log my_format;

    root /srv/www/myapp/current/public/;
  }
}
到目前为止,通过将默认值从
html
更改为
json
xml
,我能够在启动导致414错误的请求时获得这些静态页面中的每一个,但是,我已经检查了我的
access.log
$http\u accept
值总是显示为
-
$request\u filename
总是显示为
/srv/www/myapp/current/public/414.html
,而不是我在请求中传递的实际文件名

我还可以补充一点,请求确实有一个“Accept:application/json”头,它从我的curl语句传递来测试是否有适当的响应,但它仍然以
-
的形式出现在我的access.log中,
$request\u filename
仍然是414页,而不是请求中的实际文件

如有任何建议或建议,将不胜感激