Сервис os-fcgi реализует клиент-серверный протокол FastCGI, который поддерживается почти всеми веб-серверами, в том числе apache, nginx, lighttpd и мн. др.

Для того, чтобы настроить nginx для работы с os-fcgi мы просто пропишем fastcgi_pass 127.0.0.1:9000; в необходимом блоке location.

Мы использовали порт 9000, т.к. этот порт os-fcgi использует по умолчанию. Если вы поменяли настройки в файле /etc/os-fcgi/conf.os, то не забудьте внести соответствующие изменения в настройки nginx.

Пример файла конфирурации nginx

Обычно файл конфигурации сайта находится в папке /etc/nginx/sites-enabled/.

server {
    listen          80;
    server_name     mydomain.com www.mydomain.com;
    root            /home/myuser/mydomain.com/www;
    error_log       /var/log/nginx/error.mydomain.com.log;
    access_log      off;
    location ~ /\.ht {
        deny all;
    }
    location ~ /\.git {
        deny all;
    }
    location / {
        try_files $uri $uri/ /index.osh /index.os;
    }
    location ~* \.(jpg|jpeg|png|gif|swf|flv|mp4|mov|avi|wmv|m4v|mkv|ico|js|css|txt)$ {
        access_log off;
        expires 7d;
    }
    charset utf-8;
    location ~ ^.+\.osh? {
        fastcgi_split_path_info ^(.+?\.osh?)(.*)$;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.osh;
        include fastcgi_params;
        fastcgi_intercept_errors    on;
        fastcgi_ignore_client_abort on;
        fastcgi_read_timeout    360;
    }
}

Файл конфигурации fastcgi_params

Теперь мы скорректируем файл /etc/nginx/fastcgi_params, чтобы параметры передавались в os-fcgi корректным образом. Пример этого файла выглядит следующим образом:

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_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;
fastcgi_param   HTTP_REFERER	  		$http_referer;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   REDIRECT_STATUS         200;

На этом все, осталось перезагрузить nginx командой:

service nginx restart

Fork me on GitHub