nginx条件Accept头

某些移动设备向我们的服务器发送以下不正确的请求:

GET / HTTP/1.0
Accept:
User-Agent : xxx

空的Accept标头导致我们的Ruby on Rails服务器返回500错误.

在Apache中,以下指令允许我们在将标头发送到应用程序RoR服务器之前重写标头,以便处理损坏的设备:

    RequestHeader edit Accept ^$"*/*" early

我们目前正在建立Nginx,但实现相同的解决方案证明是困难的.我们可以设置:

  proxy_set_header Accept */*;

但是,这似乎必须无条件地完成.无论何时尝试:

if ($http_accept !~ ".") {
  proxy_set_header Accept */*;
}

它抱怨消息:

"proxy_set_header" directive is not allowed here

那么,使用Nginx,在将请求发送到应用服务器之前,如何将HTTP Accept标头设置为* / *?

试试这个

set $acceptHeader $http_accept;
if ($acceptHeader !~ ".") {
  set $acceptHeader '/';
}
proxy_set_header Accept $acceptHeader;

相关文章

一、Linux下Nginx的安装 1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使...
一、空格:默认匹配、普通匹配 location / { root /home; } 二、= :精确匹配(表示匹配到 /home/resou...
``` nginx -c 配置文件路径 ``` ``` /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con...
前言 nginx可所谓是如今最好用的软件级别的负载均衡了。通过nginx的高性能,并发能力强,占用内存下的特...
1.ngnix概念 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄...
博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性...