加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

一个复杂的nginx/php-fpm chroot设置

发布时间:2020-12-13 21:20:30 所属栏目:Nginx 来源:网络整理
导读:我正在运行nginx和php-fpm,我想为每个主机设置jail.我的设置有点复杂,所以在网络上的教程让我无处可去. 每个站点都有一个目录/var/www/domain.name/ 在该目录中,将有一个公共/目录,它将是网站根目录,一个将专门存储该网站的nginx日志的logs /目录,以及chroot

我正在运行nginx和php-fpm,我想为每个主机设置jail.我的设置有点复杂,所以在网络上的教程让我无处可去.

每个站点都有一个目录/var/www/domain.name/

在该目录中,将有一个公共/目录,它将是网站根目录,一个将专门存储该网站的nginx日志的logs /目录,以及chroot文件系统(etc /,usr /等)

我遇到的第一个问题是如何配置它,PHP-FPM无法找到通过nginx传递给它的文件.它们会导致“主脚本未知”错误,更糟糕的是,来自PHP-FPM的错误消息并不比这更详细,所以我无法弄清楚nginx传递的路径.

主机的php-fpm池配置如下所示:

[host]
user = host
group = www-data
chroot = /var/www/domain.name
chdir = /public
listen = 127.0.0.1:900x

每个池的’x’递增.

该主机的nginx配置如下所示:

server
{
    listen  80;

    server_name     domain.name *.domain.name;

    root            /var/www/domain.name/public;
    index           index.php index.html index.html;

    location ~ .php$
    {
            expires epoch;

            fastcgi_split_path_info ^(.+.php)(/.+)$;
            include fastcgi_params;
            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

            fastcgi_pass 127.0.0.1:9001;
    }
}

我猜这个问题是SCRIPT_FILENAME参数,但我把它改为$fastcgi_script_name,以及其他各种组合,但无济于事.

有人可以帮忙吗?

最佳答案
问题出在这里:

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

您的PHP在/var/www/domain.name中的chroot中运行,但您的文档根目录是/var/www/domain.name/public.因此,当您加载/index.php时,SCRIPT_FILENAME变为/var/www/domain.name/public/index.php.但是,在chroot中这不存在!它位于/public/index.php.

你可以做的是在这里更改目录,使其与chroot中的视图匹配:

            fastcgi_param SCRIPT_FILENAME /public$fastcgi_script_name;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读