无法使用 chroot wordpress 获取静态文件

无法使用 chroot wordpress 获取静态文件

我尝试使用 php-fpm 和 mysql 配置 chroot。我设法解决了这个问题,但是当我尝试访问 index.php 以外的文件(如 css、png 等)时,它一直给出 404。

然而,当我禁用 chroot 时,它 100% 正常工作。

我的目录结构是这样的;

/var/www #my chroot directory
/var/www/tmp #related pid and sock files
/var/www/log #related log directory
/var/www/public_html #wordpress directory

我的 nginx 配置如下;

server {
        listen   80; ## listen for ipv4; this line is default and implied

        root /public_html;
        index index.php;

        server_name _;

        location / {
                index index.php;
        }

        if (!-e $request_filename) {
                rewrite ^.*$ /index.php last;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /public_html;
        }

        location ~ \.php$ {
                fastcgi_pass unix:/var/www/tmp/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param APPLICATION_ENV production;
                include fastcgi_params;
        }

        location ~ /\.ht {
                deny all;
        }
}

您认为我做错了什么?

谢谢

答案1

我假设您正在使用 PHP-FPM 的 chroot 指令来应用 chroot 环境。也就是说,nginx 不在 chroot 中运行。

如果是这种情况,问题就在于 nginx 配置中的根配置变量。

你应该使用:

root /var/www/public_html;

然后,在 FastCGI 配置部分,您应该在后面添加以下几行include fastcgi_params

fastcgi_param SCRIPT_FILENAME /public_html$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /public_html;

这样,nginx使用的是真正的非chroot的目录结构,而PHP-FPM使用的是chroot环境,并从根据chroot进行调整的nginx中获取其环境信息。

相关内容