nginx + fpm + 子目录

nginx + fpm + 子目录

我有一个如下所示的 nginx 配置:

location ^~ /movies {
    alias /var/dp.cx/movies/current/public;
    fastcgi_index index.php;
    try_files $uri /movies/index.php;

    location ~* \.php {
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        include /etc/nginx/fastcgi_params;
    }
}

这是一个 Laravel 应用程序,几乎完全开箱即用。但是,我对此配置有几个小问题。

  • 命中/movies触发 404。命中/movies/成功。
  • 点击其中一个分页 URL(/movies/test?page=2)没有来自查询字符串的信息。

我不确定我在哪里找到了这个配置,但它似乎是我为 nginx + fpm 找到的带有子目录 URL 的最接近“工作”配置。

答案1

点击 /movies 会触发 404。点击 /movies/ 可成功。

要在服务器级别解决这个问题...请在现有的电影位置块旁边添加以下位置块...

location = /movies {
  return 301 $scheme://$host/movies/;
}

点击其中一个分页 URL (/movies/test?page=2) 没有来自查询字符串的信息。

这是由于try_files行未传递查询字符串所致。要传递它,使用以下try_files指令即可...

try_files $uri /movies/index.php$is_args$args;

直接引自http://nginx.org/en/docs/http/ngx_http_core_module.html...

$is_args - 如果请求行有参数则为“?”,否则为空字符串。

相关内容