nginx条件414错误\u页面
我的目标是,如果用户请求的URI超过服务器允许的最大值,则创建不同的414错误页面。我已经在我的应用程序中设置了3个414错误页面,格式如下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
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页,而不是请求中的实际文件
如有任何建议或建议,将不胜感激