я не могу заставить работать страницу «/ status | ping» php-fpm.
несколько спецификаций:
ОС Debian 6.0.10
Версия Plesk 12.0.18 Обновление № 35, последнее обновление 13 февраля 2015 г. 20:37
Версия PHP 5.4.37 (получена от dotdeb)
установил NGINX и PHP-FPM через функцию обновления в PLESK 12
ЗАМЕЧАНИЕ: example.com = my-real-hidden-domain-name.com
* конфиги и файлы *
*** раздел НАСТРОЙКИ ВЕБ-СЕРВЕРА
активированные настройки nginx
галочка: интеллектуальная обработка статических файлов
НЕТ галочка: обслуживать статические файлы напрямую с помощью nginx
галочка: обрабатывать PHP с помощью nginx
*** Дополнительные директивы nginx
location ~ ^/(status|ping)$ {
allow all;
fastcgi_pass unix:/var/www/vhosts/system/example.com/php-fpm.sock;
#include /etc/nginx/fastcgi.conf;
include /etc/nginx/fastcgi_params; # REMARK: not touched
}
location = /nginx_status {
stub_status on;
}
* раздел PHP НАСТРОЙКИ *
cgi.fix_pathinfo=0
в каталоге /var/www/vhosts/system/example.com/conf
добавил пользовательский файл php.ini
* php.ini утверждает: *
[example.com]
; Don't override following options, they are relied upon by Plesk internally
; Following options can be overridden
chdir = /
request_slowlog_timeout = 5s
slowlog = /var/www/vhosts/example.com/logs/example.com/slowlog-example.com.log
; By default use on demand spawning (this requires php-fpm >= 5.3.9)
pm = dynamic
pm.max_children = 20
pm.process_idle_timeout = 10s
; Following pm.* options are used only when 'pm = dynamic'
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
catch_workers_output = yes
pm.status_path = /status
ping.path = /ping
ping.response = bong
security.limit_extensions = .php .html
* php.ini утверждает конец
* конфиги и файлы заканчиваются *
пока сайт работает нормально с этой настройкой, все php проходит через nginx / php-fpm
* теперь проблема решена *
если я попытаюсь просмотреть h ** p: //example.com/status
все, что я получаю, это
пустая страница в браузерах
* $ tail -f /var/log/php5-fpm.log -n 600 -s 10 *
16-Feb-2015 21:31:52] WARNING: [pool example.com] child 21532 said into stderr: "NOTICE: Access to the script '/status' has been denied (see security.limit_extensions)"
* /var/www/vhosts/example.com/logs/example.com/proxy_access_log *
xxx.xxx.xxx.xxx - - [17/Feb/2015:16:59:11 +0100] "GET /status HTTP/1.1" 200 31 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:37.0) Gecko/20100101 Firefox/37.0"
* скрипт test-php-fpm.sh: *
SCRIPT_NAME=/status \
SCRIPT_FILENAME=/status \
QUERY_STRING= \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect /var/www/vhosts/system/example.com/php-fpm.sock
конец сценария *
$ ./test-php-fpm.sh выходы через SSH: *
Access to the script '/status' has been denied (see security.limit_extensions)
Status: 403 Forbidden
Content-type: text/html
Access denied.
* конец вывода (пустая строка есть «вывод?» *
$ curl http://example.com/status
просто НИЧЕГО не выводит
* ls -l /var/www/vhosts/system/example.com/php-fpm.sock *
srw-rw---- 1 root psaserv 0 Feb 15 19:58 /var/www/vhosts/system/example.com/php-fpm.sock
согласно нескольким учебникам это должно работать, но не работает.
я пытаюсь найти различные решения в Интернете о
Ошибки PHP-FPM NGINX и «BLANK PAGES» ИЛИ «ACCESS DENIED», но ничего не помогает.
в соответствии с этим руководством
(ЗАМЕЧАНИЕ: Я НЕ КОПИРОВАЛ ФАЙЛЫ, упомянутые там, потому что я хочу просто использовать plesk)
ч ** р: //timreeves.de/internet-technologie/server-tuning-2-nginx-und-php-fpm-unter-ubuntu-12-04-lts-und-plesk-11-5/
я тоже сделал
$ usermod -aG psacln nginx
Я не хочу идти через TCP / IP, сохранить файл сокета, пожалуйста.
Может кто-нибудь, пожалуйста, дайте мне совет.
MFG / ЗКО
Как гласит ошибка (по php-fpm), доступ запрещен, потому что php-fpm ограничен security.limit_extensions (в вашем случае .php и .html, что не то, что вы хотите, я думаю, вы не хотите разобрать .html как .php, я думаю).
Pm.status_path — это / status, и он не заканчивается расширением .php (или .html), поэтому возникает ошибка.
Когда я сам столкнулся с этой проблемой и нашел ваш вопрос в Google, я говорю вам, что мое решение должно было установить:
pm.status_path = /status.php
и используйте его в расположении nginx, и это работает.
Другим решением было бы позволить php-fpm запускать любой файл без ограничения расширения (пустое значение security.limit_extensions), но я не думаю, что это хорошая идея.
Это может не решить вашу проблему, но может упростить ее. Регулярные выражения чувствительны к положению, что может быть проблематично. Избегание их в обмен на небольшое дублирование исключит это и позволит масштабировать ваш конфиг с меньшим количеством проблем. Существует также преимущество в производительности при использовании местоположения «=».
location = /status {
allow all;
fastcgi_pass unix:/var/www/vhosts/system/example.com/php-fpm.sock;
include /etc/nginx/fastcgi_params;
}
location = /ping {
allow all;
fastcgi_pass unix:/var/www/vhosts/system/example.com/php-fpm.sock;
include /etc/nginx/fastcgi_params;
}
location = /nginx_status {
stub_status on;
}
замещать location
на nginx.conf
с этим:
location ~ ^/(status|ping)$
{
allow all;
include fastcgi.conf;
fastcgi_pass unix:/var/www/vhosts/system/example.com/php-fpm.sock;
}