我正在运行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;
原文地址:https://www.jb51.cc/nginx/435508.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。