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

nginx-基于请求的标头的响应,nginx,server-configuration,Nginx,Server Configuration,我已经安装了nginx1.0.8。 我的问题是: 我有两个文件:file1.js和file2.js。请求的路径如下所示: www.mysite.com/files\u dir/%user%/file.js 如果请求的标题“X-header”存在并具有值“OK”,则响应的内容应为file1.js或file2.js 这些文件位于“html/files\u dir”中,%user%是一组目录,表示通过我的服务注册的用户名 如何在nginx中配置它?我对php、asp或类似技术不感兴趣,只要nginx可

我已经安装了nginx1.0.8。 我的问题是: 我有两个文件:file1.js和file2.js。请求的路径如下所示:

www.mysite.com/files\u dir/%user%/file.js

如果请求的标题“X-header”存在并具有值“OK”,则响应的内容应为file1.js或file2.js

这些文件位于“html/files\u dir”中,%user%是一组目录,表示通过我的服务注册的用户名

如何在nginx中配置它?我对php、asp或类似技术不感兴趣,只要nginx可以


谢谢

您可以很容易地使用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中的HTTP变量,以及NGINX重写模块

map
允许您基于另一个变量定义变量的值<代码>映射应在
http
级别(即
服务器
之外)声明:

然后,下面的
位置
应该使用新变量
$file\u后缀

location ~ ^(/files_dir/.+)\.js$ {
  root html;
  try_files $1$file_suffix.js =404;
}

谢谢你的回答也很好,但是设置$file=file2.js;是没有“=”的。。只需设置$file file2.js;
location ~ ^(/files_dir/.+)\.js$ {
  root html;
  try_files $1$file_suffix.js =404;
}