Directadmin + Nginx + php fpm + location:找不到文件

时间:2016-12-07 03:46:41

标签: php nginx nginx-location directadmin

我在Direct Admin中有一个自定义位置的nginx conf:

代码:

location /reset-password {
     alias /home/**/domains/**.**/public_html/api/frontend-scripts/resetPassword;
     include /usr/local/directadmin/data/users/**/nginx_php.conf;
}

这不起作用; nginx显示“找不到文件”。对于浏览器中的所有PHP相关文件。简单的HTML工作正常。

我已经尝试了其他几种解决方案,即:

代码:

location /reset-password {
    alias /home/**/domains/**.**/public_html/api/frontend-scripts/resetPassword;
    # use fastcgi for all php files
    location ~ \.php$
    {
       try_files $uri index.php;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;
       include /etc/nginx/fastcgi_params;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include /etc/nginx/nginx_limits.conf;
       if (-f $request_filename)
       {
           fastcgi_pass unix:/usr/local/php56/sockets/**.sock;
       }
    }
 }

所有人都提供了“找不到档案”。在浏览器中。

所以它可能与phpfpm有关,但我没有选择。我做错了什么?

1 个答案:

答案 0 :(得分:2)

alias与PHP一起使用总是有问题的,因为$document_root$fastcgi_script_name语句不再有效。

您可以使用:

fastcgi_param SCRIPT_FILENAME $request_filename;

open bug in nginx try_files alias使用location ^~ /reset-password { rewrite ^/reset-password(.*)$ /resetPassword$1 last; } location ^~ /resetPassword { root /home/**/domains/**.**/public_html/api/frontend-scripts; ... } 有点不可预测。

我首选的解决方案是无形地重写URI,以便可以使用root directive

^~

另请注意,location ~ \.php$修饰符会导致these prefix location blocks优先于同一级别的其他正则表达式位置块(例如,另一个**You Have To Convert Array Into String First Each Element is Imploaded By , commma** $arr=array(1,2,3,6); $str_arr=implode(',',$arr); set @ids = '1,2,3,6'; select sum(promotion_id IN @ids AND confirmed_at IS NOT NULL) from blabla 块)。