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-基于请求的标头的响应,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可
谢谢您可以很容易地使用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;
}