RuHttpFcgiModule

= ngx_http_fastcgi_module =

Модуль ngx_http_fastcgi_module позволяет передавать запросы удалённому FastCGI-серверу. Содержание Пример конфигурации

Директивы

 * [#fastcgi_index fastcgi_index]
 * [#fastcgi_hide_header fastcgi_hide_header]
 * [#fastcgi_intercept_errors fastcgi_intercept_errors]
 * [#fastcgi_param fastcgi_param]
 * [#fastcgi_pass fastcgi_pass]
 * [#fastcgi_pass_header fastcgi_pass_header]
 * [#fastcgi_redirect_errors fastcgi_redirect_errors]

Параметры, передаваемые FastCGI-серверу Встроенная переменная Пример конфигурации
 * location / {
 * fastcgi_pass  localhost:9000;
 * fastcgi_index index.php;


 * fastcgi_param SCRIPT_FILENAME  /home/www/scripts/php$fastcgi_script_name;
 * fastcgi_param QUERY_STRING     $query_string;
 * fastcgi_param REQUEST_METHOD   $request_method;
 * fastcgi_param CONTENT_TYPE     $content_type;
 * fastcgi_param CONTENT_LENGTH   $content_length;
 * }

fastcgi_index
syntax: fastcgi_index имя

default: нет

context: http, server, location

Директива задаёт имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом.

fastcgi_hide_header
syntax: fastcgi_hide_header имя

context: http, server, location

nginx не передаёт клиенту строки заголовка "Status" и "X-Accel-..." из ответа FastCGI сервера. Директива fastcgi_hide_header задаёт дополнительные строки. Если же строки нужно наоброт разрешить, то нужно воспользоваться директивой fastcgi_pass_header.

fastcgi_intercept_errors
syntax: fastcgi_intercept_errors on|off

default: fastcgi_intercept_errors off

context: http, server, location

Директива определяет, передавать ли клиенту проксированные ответы с кодом больше или равные 400 или же перенаправлять их на обработку nginx'у с помощью директивы error_page.

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

default: нет

context: http, server, location

Директива задаёт параметр, который будут передаваться FastCGI-серверу. В качестве значения можно использовать текст, переменные и их комбинации. Директивы наследуются с предыдущего уровня при условии, что на данном уровне не описаны свои директивы fastcgi_param.

Ниже приведён пример минимально необходимых параметров для PHP:
 * fastcgi_param SCRIPT_FILENAME  /home/www/scripts/php$fastcgi_script_name;
 * fastcgi_param QUERY_STRING     $query_string;

Параметр SCRIPT_FILENAME используется в PHP для определения имени скрипта, а в параметре QUERY_STRING передаются параметры запроса.

Если скрипты обрабатывают запросы POST, то нужны ещё три параметра:
 * fastcgi_param REQUEST_METHOD   $request_method;
 * fastcgi_param CONTENT_TYPE     $content_type;
 * fastcgi_param CONTENT_LENGTH   $content_length;

Если PHP был собран с параметром конфигурации --enable-force-cgi-redirect, то нужно передавать параметр REDIRECT_STATUS со значением "200":
 * fastcgi_param REDIRECT_STATUS  200;

fastcgi_pass
syntax: fastcgi_pass fastcgi-server

default: нет

context: location, if в location

Директива задаёт порт или сокет, на котором слушает FastCGI-сервер. Порт может быть указан в виде имени хоста или адреса и порта, например,
 * fastcgi_pass  localhost:9000;

а сокет — в виде пути unix сокета:
 * fastcgi_pass  unix:/tmp/fastcgi.socket;

fastcgi_pass_header
syntax: fastcgi_pass_header имя

context: http, server, location

Директива разрешает передавать клиенту запрещённые для передачи строки.

fastcgi_redirect_errors
syntax: fastcgi_redirect_errors on|off

Директива переименована в fastcgi_intercept_errors. Параметры, передаваемые FastCGI-серверу

Строки заголовка HTTP запроса передаются FastCGI-серверу в виде параметров. В приложениях и скриптах, запущенных в виде FastCGI-сервера, эти параметры обычно доступны в виде переменных среды. Например, строка заголовка "User-Agent" передаётся как параметр HTTP_USER_AGENT. Кроме строк заголовка HTTP запроса, можно передавать произвольные параметры с помощью директивы fastcgi_param. Встроенная переменная

В модуле ngx_http_fastcgi_module есть одна встроенная переменная, которую можно использовать для формирования параметров с помощью директивы fastcgi_param:


 * $fastcgi_script_name, эта переменная равна URI запроса или же, если URI заканчивается слэшом, то — URI запроса плюс имя индексного файла, задаваемого директивой fastcgi_index. Эту переменную можно использовать для задания параметра SCRIPT_FILENAME и PATH_TRANSLATED, используемых, в частности, для определения имени скрипта в PHP. Например, для запроса "/info/" и при использовании директив
 * fastcgi_index index.php;
 * fastcgi_param SCRIPT_FILENAME  /home/www/scripts/php$fastcgi_script_name;
 * параметр SCRIPT_FILENAME будут равен "/home/www/scripts/php/info/index.php".