Re: Проблема с chroot в связке Nginx + PHP-FPM

Vadim A. Misbakh-Soloviov mva at mva.name
Sun Jun 2 03:35:00 UTC 2013


1) Не могли бы Вы включить более подробный логгинг? :) Да и попробовтаь
посмотреть в файле. (который error_log в nginx'е).
2) Я бы всё-таки посоветовал не слушать то, что написано в конфигах PHP
и не использовать их chroot, т.к. уже давно существует мнение, что
PHP'шный chroot это то, как безопасность НЕ НУЖНО организовывать.

А ещё, так, к слову, PHP'шный чрут требует чтобы временные директории,
директории для хранения сессий, директории с библиотеками и т.п. были
ВНУТРИ чрута. Что 1) тоже влияет на безопасность в худшую сторону, 2)
может являться причиной Ваших проблем.

Для справки, как (схематично, без реальных юзернеймов и портов) это
сделано у меня:


hosting ~mva % cat /etc/nginx/vhosts.d/s_username/site.ru
server {
        include         backends.d/configs/listen;

        server_name     site.ru www.site.ru;

        root            /srv/web/s_username/sites/site.ru/www;
        index           index.html index.htm index.php;

        access_log
/srv/web/s_username/logs/site.ru/www/access.nginx.log;
        error_log
/srv/web/s_username/logs/site.ru/www/error.nginx.log;

        charset         utf-8;
        source_charset  utf-8;

        include         security.d/bots;
        include         rewrites.d/errors;
        include         rewrites.d/static;

        include         fpm.d/s_username.conf;
}

hosting ~mva % cat /etc/nginx/fpm.d/s_username.conf
location ~ \.php$ {
        fastcgi_pass    127.0.0.1:xxxxx;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME
$document_root$fastcgi_script_name;
        include         /etc/nginx/fastcgi_params;
}


hosting ~mva % grep include= /etc/php/fpm-php5.3/php-fpm.conf
include=/etc/php/pools.d/*.conf

hosting ~mva % grep include= /etc/php/fpm-php5.4/php-fpm.conf
include=/etc/php/pools.d/*.conf

hosting ~mva % grep include= /etc/php/fpm-php5.5/php-fpm.conf
include=/etc/php/pools.d/*.conf

hosting ~mva % cat /etc/php/pools.d/s_username.conf
[s_username]

listen = 127.0.0.1:xxxxx
listen.allowed_clients = 127.0.0.1

user = s_username
group = s_username

pm = dynamic
pm.max_children = 7
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 3

php_admin_value[open_basedir] =
/srv/web/s_username/sites/:/tmp/:/usr/share/php
php_admin_value[disable_functions] =
eval,base64_decode,gzinflate,dl,exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source

Т.е. хосты поделены по юзерам и каждый юзер - отдельный системный юзер,
который использует свой инстанс php-fpm. При этом юзер может писать
только в /tmp и к себе в хомяк. Читать может - согласна проставленным в
системе правам. Например, /etc/shadow — не может:

s_username at hosting mva % cat /etc/shadow
cat: /etc/shadow: Отказано в доступе

s_username at hosting mva % ll -o /etc/shadow
-rw-r----- 1 root 2,2K июня   2 07:38 /etc/shadow


01.06.2013 20:59, Sferg пишет:
> Здравствуйте, господа.
> 
> Недавно решил поднять веб-серверок для экспериментов. Остановился на связке
> Nginx 1.4.1 + PHP-FPM 5.4.4 + MySQL 5.5.31.
> 
> Директория расположения сайтов у меня /home/kursk.dyndns.org/www,
> соответственно параметр chroot в /etc/php5/fpm/pool.d/www.conf у меня
> выглядит так:
> 
> chroot = /home/kursk.dyndns.org/www
> 
> а в /etc/nginx/sites-enabled/kursk.dyndns.org для работы с chroot прописана
> строчка:
> 
> fastcgi_param SCRIPT_FILENAME  /$fastcgi_script_name;
> 
> Если разместить в /home/kursk.dyndns.org/www/ файл index.php со строчкой
> 
> phpinfo();
> 
> то всё прекрасно открывается. Но если залить тот же phpBB3, то всё время
> наблюдается белая страница (в php.ini прописан параметр display_errors=1).
> Если chroot убрать, то всё открывается нормально.
> 
> В чём может быть проблема? Уже несколько дней бьюсь(((
> 
> С уважением, Геннадий.
> 
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,239746,239746#msg-239746
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130602/dac974ff/attachment.bin>


Подробная информация о списке рассылки nginx-ru