nginx - 基于请求的标头的响应

时间:2012-02-06 22:36:23

标签: nginx server-configuration

我安装了nginx 1.0.8。 这是我的问题: 我有2个文件: file1.js file2.js 。请求的路径是这样的:

  

www.mysite.com/files_dir/%user%/file.js

如果请求的标题:“ X-Header ”存在并且值为“确定”,则响应的内容应为file1.js else file2.js。< / p>

文件位于“ html / files_dir ”中,%user%是一组目录,代表通过我的服务注册的用户名。

如何在nginx中配置?我对php,asp或类似技术不感兴趣只有在nginx可能的情况下。

由于

2 个答案:

答案 0 :(得分:9)

map允许您根据另一个变量定义变量的值。 map应在http级别(即server之外)声明:

map $http_x_header $file_suffix {
  default "2";
  OK      "1";
};

然后,以下location应该使用您的新变量$file_suffix

来解决这个问题
location ~ ^(/files_dir/.+)\.js$ {
  root html;
  try_files $1$file_suffix.js =404;
}

答案 1 :(得分:1)

你可以很容易地用nginx做到这一点。这是一个例子:

location /files_dir/ {

    set $file = file2.js;
    if ( $http_x_header = OK ) {
        set $file = file1.js;
    }
    rewrite ^(/files_dir/.*)/file.js$ $1/$file last;

}

你可以在NGINX here和nginx重写模块here

中阅读有关HTTP变量的内容