nginx - response based on the requested header

nginx, server-configuration

Solution

`map` lets you define a variable's value based on another variable. `map` should be declared at `http` level (i.e. outside of `server`):

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

Then the following `location` should do the trick using your new variable `$file_suffix`

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

Problem

I have nginx 1.0.8 installed. here is my problem: I have 2 files : file1.js and file2.js. the requested path is something like this: www.mysite.com/files_dir/%user%/file.js If the requested header : "X-Header" exists and has the value "OK" then the responded content should be file1.js else file2.js. The files are situated in "html/files_dir" and %user% is a set of directories that represents the usernames registered through my service. How do I configure this in nginx? I'm not interested in php, asp or similar technologies only if it's possible with nginx. Thanks

Original source