Nginx & php-fpm and custom header

nginxphp-fpm

I would like to pass some custom header (ACCESS_TOKEN) from client RESTful application (JS) to application server (php-fpm).

I had read that nginx should pass all http headers to php, but somehow it does not come to my php 🙁

I can see it in firebug http://o7.no/N6DM7q but can't see it in $_SERVER variable. it just does not exist in $_SERVER array.

I'm thinking that i need to pass it manually.
Now my config looks like that:

location @php-fpm {
    include /etc/nginx/fastcgi_params;


    fastcgi_pass unix:/tmp/php5-fpm.sock;
    fastcgi_param REQUEST_URI    /index.php$request_uri;
    fastcgi_param SCRIPT_FILENAME /htdocs/index.php;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT /htdocs;
    }
}

and when I add new line in location definition:

location @php-fpm {
    include /etc/nginx/fastcgi_params;
    ...
    fastcgi_param ACCESS_TOKEN $http_access_token;
    }
}

or even if i will add it into fastcgi_params file it does not help 🙁

if I put into location part next line:

 fastcgi_param ACCESS_TOKEN $http_access_token;

then in php it has empty value 🙁

how I can pass custom header from client to backend (php) via nginx ?

Best Answer

I see problem in that in custom header can't be used underscore. Instead of ACCESS_TOKEN I have to use ACCESS-TOKEN as header name, then nginx really passes it automatically.

And explanation how to fix had been found in this StackOverflow question.