FastCGI

Igor Sysoev is at rambler-co.ru
Tue Jan 18 17:49:12 MSK 2005


Комментарий к FastCGIO модулю.

Модуль собирается по умолчанию. Используется только remote FastCGI.

Ограничение (разумные):
1) заголовок запроса (FastCGI параметры и HTTP_*) не может быть больше 64K.
2) заголовок ответа должен быть в одной FastCGI записи (8K).
При превышении в логах будет alert. Если вы их увидите, сообщайте, будем
бороться.

Тестировался с PHP-4.3.10. При сборке не нужно указывать --enable-discard-path.
Можно указать --enable-force-cgi-redirect, но, честно говоря, не знаю,
нужно ли это в ситуации remote FastCGI.


Директивы:

    location   /  {
        fastcgi_pass  localhost:9000;
        #fastcgi_pass  unix:/tmp/socket;

        fastcgi_root   /path/to/php;
        fastcgi_index  index.php;
    }

fastcgi_root означает префикс на стороне FastCGI. Если запрос /some/uri,
то полный путь скрипта - /path/to/php/some/uri, этот путь
передаётся в параметре PATH_TRANSALTED.
fastcgi_root задают индексное имя для запросов типа /some/uri/.
Имя может быть только одно.

Многие директивы fastcgi аналогичны proxy:

    fastcgi_connect_timeout       60;
    fastcgi_send_timeout          180;
    fastcgi_read_timeout          180;

    fastcgi_header_buffer_size    32k;
    fastcgi_buffers               4 32k;
    fastcgi_busy_buffers_size     32k;
    fastcgi_temp_file_write_size  32k;
    fastcgi_temp_path             /var/tmp;

    fastcgi_next_upstream         error timeout invalid_header http_500
                                  http_404;
    по умолчанию
    fastcgi_next_upstream         error timeout;

Директивы, специфичные для fastcgi:

    fastcgi_x_powered_by       off;  # по умолчанию on

    fastcgi_params
                   remote_addr
                   server_name
                   server_addr       # лишний сисколл на запрос
                   server_port
                   scrip_name
                   server_protocol
                   server_software
                   gateway_interface
                   request_uri
                   redirect_status   # нужен, если php собран с
                                     #--enable-force-cgi-redirect
                   ;

fastcgi_params позволяет передавать серверу только часть параметров,
по умолчания передаются только

    fastcgi_params  remote_addr server_name server_port
                    scrip_name request_uri redirect_status;

Все директивы, кроме fastcgi_pass, могут задаваться на уровне http,
server, location. fastcgi_pass - только на уровне location.


Игорь Сысоев
http://sysoev.ru


More information about the nginx-ru mailing list