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;
: }
[edit] fastcgi_index
syntax: fastcgi_index имя
default: нет
context: http, server, location
Директива задаёт имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом.
[edit] fastcgi_hide_header
syntax: fastcgi_hide_header имя
context: http, server, location
nginx не передаёт клиенту строки заголовка "Status" и "X-Accel-..." из ответа FastCGI сервера. Директива fastcgi_hide_header задаёт дополнительные строки. Если же строки нужно наоброт разрешить, то нужно воспользоваться директивой fastcgi_pass_header.
[edit] fastcgi_intercept_errors
syntax: fastcgi_intercept_errors on|off
default: fastcgi_intercept_errors off
context: http, server, location
Директива определяет, передавать ли клиенту проксированные ответы с кодом больше или равные 400 или же перенаправлять их на обработку nginx'у с помощью директивы error_page.
[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;
[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;
[edit] fastcgi_pass_header
syntax: fastcgi_pass_header имя
context: http, server, location
Директива разрешает передавать клиенту запрещённые для передачи строки.
[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".










