Nginx 嵌入变量 $arg_timestamp 似乎缺失

Nginx 嵌入变量 $arg_timestamp 似乎缺失

我刚刚遇到了一些奇怪的事情,无法解释,甚至无法在其他服务器上重现——由于某种原因,嵌入式变量 $arg_timestamp 丢失。

服务器配置:

server {
  server_name _;
  listen 80;

  location /{
    add_header X-foo $args;
    add_header X-bar $arg_timestamp;
    add_header X-bar $arg_timestam;
    return 204;
  }
}

和一些测试

ogryzek% curl -D - -s 'http://fqdn/?timestamp=3' 
HTTP/1.1 204 No Content
Server: nginx/1.6.2
Date: Sun, 21 May 2017 22:47:34 GMT
Connection: keep-alive
Keep-Alive: timeout=20
X-foo: timestamp=3

ogryzek% curl -D - -s 'http://fqdn/?timestam=3'
HTTP/1.1 204 No Content
Server: nginx/1.6.2
Date: Sun, 21 May 2017 22:47:56 GMT
Connection: keep-alive
Keep-Alive: timeout=20
X-foo: timestam=3
X-bar: 3

答案1

我找到了问题的原因 -if 是邪恶的

其他vhost之一有

if ($args ~* "(.*)timestamp=([0-9]{7})([0-9]{3})($|\&.*)" ) {
  set $arg_timestamp $2000;
}

相关内容