Map指令不工作:未知variables

我正在使用nginx版本1.4.6。

我无法使map工作。 我有这样的东西:

 http { map $arg_f $forum { default 0; 1 2; } # ... server { # ... location = /old.php { if ($forum) { return 301 /forums/$forum/; } return 494; } # ... } # ... } 

下面是我用nginx -t获得的nginx -t

 nginx: [emerg] unknown "forum" variable 

目标是将旧的URI映射到新的URI。 问题是一些数字论坛ID已经改变了。 我想在Nginx中处理这个,所以如果没有其他简单的方法,我愿意诉诸lua。 只要他们优雅,我可以select其他的解决scheme,但我想知道为什么map不在这里工作。 是否因为重写模块不查询地图,至less在1.4?

我只用nginx v1.4.7testing了下面的最小configuration:

 events { worker_connections 1024; } http { map $arg_f $forum { default 0; 1 2; } server { location = /old.php { default_type text/html; if ($forum) { return 200 "OK"; } return 200 "KO"; } } } 

它运行完美,所以最可能的原因是你的configuration不正确。 我猜想你在添加map指令方面所做的更改使得它变得不可用。

尝试:

  1. 使用nginx -t来validation你的configuration
  2. 监视错误日志文件,同时发出service nginx reload以捕获在运行时可能发生的在configuration时无法检测到的任何错误。

请注意,使用最新产品总是一个好主意。

  • 至less,使用nginx v1.4.7更新日志
  • 更好的是,使用至less稳定的版本(目前是v1.6.2) Changelog

http://nginx.org/en/download.html