[英]Nginx/Fcgi: index.php issue with pseudo-alias location
Debian Jessie上的Nginx 1.6.2
我想将所有example.com/forum/请求映射到/ path / to / htdocs / phpbb并切断URI中的/ forum /部分。 有人在Stackoverflow上建议使用“重写”解决方案,而不是“别名” ,因为存在一些错误。
server
{
listen [::]:80;
server_name example.com;
root /var/www/html;
index index.php index.html;
#try_files $uri $uri/ =404;
location /forum/
{
root /path/to/htdocs/phpbb;
rewrite ^/forum/(.*)$ /$1 break;
location ~ .+\.php$
{
rewrite ^/forum/(.*)$ /$1 break;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
}
该示例配置工作正常- example.com/forum/viewtopic.php执行脚本/path/to/htdocs/phpbb/viewtopic.php -但example.com/( 的index.php)不工作:
“ /var/www/html/index.php”失败(2:无此类文件或目录)
从服务器块中删除“索引”行后:
禁止“ / path / to / htdocs / phpbb /”的目录索引
将“索引”和/或“ try_files”行移到位置块后:
index.php的投放没有传递给php-fpm…
好的,我的配置出了什么问题? 有什么提示吗?
好的,别名是错误的(也可以重写 ...),但是如果您避免使用try_files并使用if代替(即使是邪恶的……),它应该可以工作!
server
{
listen [::]:80;
server_name example.com;
root /var/www/html;
location /forum/
{
alias /path/to/htdocs/phpbb/;
index index.php index.html;
location ~ "^(/forum/)(.+\.php)(/.+){0,1}$"
{
if (!-f $document_root$2)
{
return 404;
}
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$2;
fastcgi_param SCRIPT_NAME $1$2;
fastcgi_param PATH_INFO $3;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
}
phpinfo()看起来不错,但是仍然存在一个问题: 它安全吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.