Я настроил pm.status_path = /status
вариант:
ubuntu:~$ cat /etc/php/7.1/fpm/pool.d/www.conf | egrep 'listen|status'
listen = /run/php/php7.1-fpm.sock
listen.owner = www-data
listen.group = www-data
pm.status_path = /status
Сокет правильный (и сайты работают):
ubuntu:~$ sudo ls -la /run/php/php7.1-fpm.sock
srw-rw---- 1 www-data www-data 0 Feb 9 07:58 /run/php/php7.1-fpm.sock
Но я не могу получить эту страницу статуса:
ubuntu:~$ SCRIPT_NAME=/status SCRIPT_FILENAME=/status \
> REQUEST_METHOD=GET sudo cgi-fcgi -bind -connect /run/php/php7.1-fpm.sock
Content-type: text/html; charset=UTF-8
Или используя конфигурацию nginx:
server {
listen 80;
server_name localhost;
location /status {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
}
curl http://localhost/status
пусто, код состояния 200.
curl http://localhost/something
возвращает ошибку 404, как и ожидалось.
Что мне делать, чтобы разрешить эту ситуацию? Что проверять?
Для правильной работы страницы статуса PHP-FPM под nginx необходимо установить все следующие параметры:
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param SCRIPT_NAME /status; # see notes below
fastcgi_param SCRIPT_FILENAME ""; # see notes below
REQUEST_METHOD
и QUERY_STRING
установлены include fastcgi_params
. Если вы используете этот файл конфигурации, вам не нужно устанавливать их снова.
Значение SCRIPT_NAME
должно соответствовать значению pm.status_path
в вашей конфигурации PHP-FPM.
Значение SCRIPT_FILENAME
неважно, но это должно быть установлено. Если вы пропустите этот параметр, вы получите пустой ответ.
Мне пришлось добавить эту строку в местоположение:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;