我在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有关,但我没有选择。我做错了什么?
答案 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
块)。