nginx - php7.0-fpm php脚本无法使用别名

时间:2017-01-10 19:54:29

标签: nginx php-7

我想创建路由,如:

  • hxxp://127.0.0.1/< - 默认位置/ var / www /不列出目录
  • hxxp://127.0.0.1/allegro/

怎么做? 如果我去hxxp://127.0.0.1/allegro/scripts/test.php,我会看到一个空白页面。如果我去hxxp://127.0.0.1/ php脚本正常执行,我看到phpinfo()

我的nginx配置:

server {
listen 8000 default_server;
listen [::]:8000 default_server;

root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name localhost;

location / {
    try_files $uri $uri/ =404;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php7.0-fpm.sock;
}

location /allegro/ {
    alias /var/www/allegro/;
    autoindex on;
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
        fastcgi_pass unix:/run/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

}

1 个答案:

答案 0 :(得分:0)

您当前的配置存在多个问题。最重要的是,嵌套位置块处理URI /allegro/scripts/test.php ,因为正则表达式位置块优先(除非使用^~修饰符)。

location ^~ /allegro/ {
    root /var/www;
#   autoindex on;
    try_files $uri $uri/ =404;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php7.0-fpm.sock;
        include fastcgi_params;
    }
}

^~修饰符可确保此前缀位置优先于同一级别的正则表达式位置。有关详细信息,请参阅this document

请注意,root语句优先于适用的alias语句(有关详细信息,请参阅this document)。

对于与路径信息不匹配的位置块,fastcgi_split_path_infofastcgi_index指令是不必要的。

您需要确定include fastcgi_paramsinclude snippets/fastcgi-php.conf是否更适合FastCGI参数来源。