Назад | Перейти на главную страницу

Как отобразить статус PHP-FPM на двух пулах?

Установите nginx 1.0.6 PHP5-FPM 5.3.8.1 на vps с двумя включенными сайтами - по умолчанию и песочница. оба имеют разные пулы - по умолчанию 127.0.0.1:9001, песочница - unix: /tmp/php5-fpm.sock.

трафик на domain.com обслуживается по умолчанию, sandbox.domain.com - песочницей. Оба работают нормально, обслуживая приложения php.

Я решил переключить pm.status_path на обоих - по умолчанию / status1, песочница - / status.

Я могу свернуться http://127.0.0.1/status1 и получить ответ.

pool:                 default
process manager:      dynamic
start time:           10/Oct/2011:18:14:24 -0500
start since:          8771
accepted conn:        61
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       2
active processes:     1
total processes:      3
max active processes: 1
max children reached: 0

Тем не мение, http://127.0.0.1/status возвращает сообщение "искомая страница временно недоступна. Повторите попытку позже"

правило по умолчанию довольно стандартное.

location ~ ^/(status|status1|ping)$ {
        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_NAME        $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME    $document_root$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  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;

        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_pass                      127.0.0.1:9001;
        fastcgi_read_timeout              300;
        fastcgi_intercept_errors          on;

        allow                             127.0.0.1;
        deny                              all;
}

Идеи?

    location /php-fpm-pool1 {
        fastcgi_pass unix:/var/run/php5-fpm-pool1.sock;
        fastcgi_param  QUERY_STRING    $query_string;    #Allow ?json arg
        fastcgi_param  REQUEST_METHOD  GET;
        fastcgi_param  SCRIPT_NAME     /php-fpm-status;
        fastcgi_param  SCRIPT_FILENAME /php-fpm-status;
        allow 127.0.0.1;
        deny all;
    }
    location /php-fpm-pool2 {
        fastcgi_pass unix:/var/run/php5-fpm-pool2.sock;
        fastcgi_param  QUERY_STRING    $query_string;
        fastcgi_param  REQUEST_METHOD  GET;
        fastcgi_param  SCRIPT_NAME     /php-fpm-status;
        fastcgi_param  SCRIPT_FILENAME /php-fpm-status;
        allow 127.0.0.1;
        deny all;
    }

Создайте отдельный location для /status, что-то вроде этого:

    location /status {
        fastcgi_pass unix:/tmp/php5-fpm.sock;
        include fastcgi.conf;

        fastcgi_intercept_errors        on;
        error_page 404 /error/404.php;
    }