FAQ

Page Discussion Edit History

RuHttpFcgiModule

Contents

[edit] ngx_http_fastcgi_module

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

[edit] Директивы

  • [#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;
: }

Template:Anchor

[edit] fastcgi_index

syntax: fastcgi_index имя

default: нет

context: http, server, location

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

Template:Anchor

[edit] fastcgi_hide_header

syntax: fastcgi_hide_header имя

context: http, server, location

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

Template:Anchor

[edit] fastcgi_intercept_errors

syntax: fastcgi_intercept_errors on|off

default: fastcgi_intercept_errors off

context: http, server, location

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

Template:Anchor

[edit] 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;

Template:Anchor

[edit] fastcgi_pass

syntax: fastcgi_pass fastcgi-server

default: нет

context: location, if в location

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

: fastcgi_pass   localhost:9000;

а сокет — в виде пути unix сокета:

: fastcgi_pass   unix:/tmp/fastcgi.socket;

Template:Anchor

[edit] fastcgi_pass_header

syntax: fastcgi_pass_header имя

context: http, server, location

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

Template:Anchor

[edit] 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".