Отправить дополнительный заголовок в бэкэнд FastCGI с помощью nginx - PullRequest
10 голосов
/ 27 февраля 2012

Я использую nginx с несколькими бэкэндами fastcgi (php-cgi, mod-mono-fastcgi4).Теперь мне нужно отправить дополнительный http-заголовок в бэкэнд fastcgi, в основном такой же, как proxy_set_header, когда nginx используется в качестве обратного прокси-сервера.Но, по моим наблюдениям, в nginx нет такой вещи, как fastcgi_set_header.

У кого-нибудь есть идеи, как это сделать?Я не хочу использовать дополнительные модули nginx, так как решение должно быть легко развернуто на широком спектре пользовательских систем.

Ответы [ 4 ]

9 голосов
/ 27 февраля 2012

Я быстро взглянул на руководство и думаю, что самое близкое, что вы найдете, это передача параметров fastcgi:

Заголовки запроса передаются на FastCGI-сервер в виде параметров. В приложениях и скриптах, запускаемых с FastCGI-сервера, эти параметры обычно доступны в виде переменных среды. Например, заголовок «Пользователь-агент» передается как параметр HTTP_USER_AGENT. Помимо заголовков HTTP-запроса, можно передавать произвольные параметры с помощью директивы fastcgi_param.

http://wiki.nginx.org/HttpFcgiModule#Parameters.2C_transferred_to_FastCGI-server.

fastcgi_param

синтаксис: значение параметра fastcgi_param

http://wiki.nginx.org/HttpFcgiModule#fastcgi_param

2 голосов
/ 10 ноября 2017

URL-адреса вышеприведенных вики-статей nginx не работают.

nginx предоставляет значения заголовка запроса через переменные с префиксом $ http_ , поэтому заголовок запроса HTTP_USER_AGENT доступен через $ http_user_agent .

Аналогично, заголовок запроса с именем CHICKEN_SOUP будет доступен через $ http_chicken_soup .

В приведенном ниже примере показано, как передать заголовок HTTP-запроса Authorization в сценарии PHP, работающие в php-fpm (диспетчер процессов PHP FastCGI).

location ~ \.php$ {
    fastcgi_pass   unix:/path/to/socket;
    fastcgi_index  index.php;
    fastcgi_param  HTTP_AUTHORIZATION $http_authorization;
    ... other settings
}
2 голосов
/ 06 декабря 2014

Nginx теперь имеет:

fastcgi_pass_header 'Cache-Control: no-cache, must-revalidate';

Который может использоваться в правилах вашего местоположения, если вы добавляете заголовки, которые еще не указаны в вашем запросе. По умолчанию fastcgi использует:

fastcgi_pass_request_headers on;

, который передаст все входящие заголовки из запроса в fastcgi.

0 голосов
/ 17 октября 2012

Вы можете сделать это с помощью стороннего модуля ngx_headers_more . После сборки nginx с включенным этим модулем вы можете сделать следующее в вашей конфигурации:

location / {
    more_set_input_headers 'Foo: bar baz';
    ...
}
...