Страница состояния Php-fpm не отображена

У меня есть попытка получить php-fpm страницу состояния. Когда я открываю / страницу состояния в веб-браузере или непосредственно к fcgi - это говорит что Файл, не найденный.

Вы могли помочь - как зафиксировать это.

# grep -ER "status|ping" /etc/php5/* | grep -v ":;"
/etc/php5/fpm/pool.d/www.conf:pm.status_path = /status
/etc/php5/fpm/pool.d/www.conf:ping.path = /ping
/etc/php5/fpm/pool.d/www.conf:ping.response = pong 

# SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING=  REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php-fpm-www.sock
Primary script unknown
Status: 404 Not Found
Content-type: text/html

File not found.

# SCRIPT_NAME=/ping SCRIPT_FILENAME=/ping REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php-fpm-www.sock
Primary script unknown
Status: 404 Not Found
Content-type: text/html

File not found.
5
задан 26 August 2015 в 19:08
6 ответов

У меня была такая же проблема, и я просто собираюсь описать, что мне нужно, чтобы она работала. Вы не поделились подробностями о конфигурации php-fpm или nginx (если это то, что вы используете в качестве веб-сервера). Обратите внимание, что вам может потребоваться выполнить приведенные ниже инструкции с sudo / как root перед командами, чтобы иметь права на изменение файлов или перезапуск служб.

В php-fpm config

vi /etc/php-fpm.d/www.conf

Найдите директиву пути статуса и включите it

pm.status_path = /status

Затем убедитесь, что nginx может вызвать это местоположение. В вашей конфигурации сайта nginx

vi /etc/nginx/conf.d/mysite.conf

Добавить

location ~ ^/(status|ping)$ {
     access_log off;
     #allow 127.0.0.1;
     #allow 1.2.3.4#your-ip;
     #deny all;
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_pass 127.0.0.1:9000;
 }

Уведомление выше я закомментировал инструкции разрешить и запретить, чтобы страница состояния была включена с любого IP. Убедитесь, что это не включено в производственной среде. Теперь перезапустите и nginx, и php-fpm

sudo service nginx restart
sudo service php-fpm restart

. Теперь вызов страницы состояния из браузера должен работать

12
ответ дан 3 December 2019 в 00:57

Если вы хотите сделать это из командной строки на debian.

как root

watch service php5-fpm status
-1
ответ дан 3 December 2019 в 00:57

Для php7.0 используйте эти коды, чтобы активировать статус.

В файле по умолчанию в / etc / nginx / sites-available /

location /status {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    log_not_found off;
    }

Раскомментируйте следующую строку в www.conf (файл) в /etc/php/7.0/fpm/pool.d (расположение)

pm.status_path = /status

Перезапустить оба nginx / php7.0

sudo systemctl restart nginx
sudo systemctl restart php7.0-fpm

Теперь в веб-браузере введите этот адрес, чтобы получить полный подробный отчет о текущих запущенных сценариях php на текущем активном веб-сервере, где php7.0 настроен для работы.

http://yoursite.net/status?html&full

Кроме того, убедитесь, что он защищен паролем, чтобы защитить его от злоумышленников, как описано здесь

https://www.digitalocean.com/community/tutorials/how-to-set-up-password- authentication-with-nginx-on-ubuntu-14-04

5
ответ дан 3 December 2019 в 00:57

I была аналогичная проблема в Ubuntu 18.04 с PHP 7.2. Обнаружено, что эти строки были недавно добавлены в snippet / fastcgi-php.conf

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

по умолчанию, а так как файла для pm.status_path нет - возвращается 404;

Итак, для мне - мне пришлось удалить include snippet / fastcgi-php.conf

Вам все равно нужно пройти REQUEST_METHOD , QUERY_STRING , SCRIPT_NAME и SCRIPT_FILENAME . Просто сделайте это без snippet / fastcgi-php.conf . Часто у вас будет fastcgi.conf , который будет работать.

1
ответ дан 15 December 2019 в 06:54

Просто вмешиваюсь, поскольку другие ответы не помогли мне решить эту проблему.

Все, что мне нужно было сделать (после настройки конфигурации пула fpm и расположения nginx ), было
сенсорного статуса
в корне сайта nginx.

Я не знаю, сколько из следующего необходимо, но оно работает:

location ^~ /status {
    access_log off;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

^ ~ можно заменить на = . Посетите https://stackoverflow.com/questions/5238377/nginx-location-priority для получения дополнительной информации

1
ответ дан 9 March 2020 в 21:32

Мистер. Любознательному тоже было любопытно. php-fpm заботится только о том, чтобы параметры SCRIPT_NAME и SCRIPT_FILENAME соответствовали значению параметра pm.status_path.

Таким образом, ниже показано минимальное расположение nginx для доступа к информации о статусе:

location = /a_random_path_here_ODY1NjY3Mj/fpm-status {
    include fastcgi_params;

    #'/status' is the value of pm.status_path in /etc/php/7.1/fpm/pool.d/www.conf
    fastcgi_param SCRIPT_NAME '/status';
    fastcgi_param SCRIPT_FILENAME '/status';

    fastcgi_pass   unix:/var/run/php/php7.1-fpm.sock;
}

Явным образом указав значения параметров, местоположение страницы статуса можно назвать как угодно и оно может находиться на любом пути, а не только /status. Наличие случайного пути также помогает предотвратить создание ненужных записей в журнале от всех видов сканеров.

В рабочей среде, очевидно, следует добавить директивы allow/deny или защиту паролем для расположения, но приведенная выше минимальная необходимая конфигурация.

То же самое можно сделать и для ping uri (параметр ping.path), если он включен.

1
ответ дан 26 April 2020 в 13:48

Теги

Похожие вопросы