Nginx – How to display PHP-FPM status on two pools

nginxphp-fpm

Have nginx 1.0.6 PHP5-FPM 5.3.8.1 on a vps with two enabled sites – default & sandbox. both have different pools – default is 127.0.0.1:9001, sandbox is unix:/tmp/php5-fpm.sock.

traffic to domain.com is served by default, sandbox.domain.com is by sandbox. Both work fine serving php apps.

I decided to flip on pm.status_path on both – default is /status1, sandbox is /status.

I can curl http://127.0.0.1/status1 & get a response.

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

However, http://127.0.0.1/status returns a "the page you are looking for is temporily unavailable. Please try again later"

default's rule is pretty standard.

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;
}

Ideas?

Best Answer

Create a separate location for /status, something like this:

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

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