繁体   English   中英

Nginx / Fcgi:伪别名位置的index.php问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM