使用NGINX的单个域上的多个Laravel项目

时间:2017-03-08 10:38:00

标签: laravel nginx

在工作中,我们有一个具有暂存域的登台服务器,类似于https://staging.example.com。我们最近决定在新服务器上从Apache切换到NGINX,而我们的Laravel路由问题也存在问题。

我们所有的laravel应用程序都位于登台服务器的子目录中,如此。

我尝试按Laravel docs中的说明配置NGINX配置文件,但在访问任何第二级路由时获取404,即https://staging.example.com/app1/public/a/b

使用类似下面的配置,我可以访问应用程序中的所有路径。

location @laravel {
        rewrite /app1/public/(.*)$ /app1/public/index.php?$1;
}

location / {
        try_files $uri $uri/ @laravel;
}

但是,我们在此服务器上托管了许多应用,并且我们不希望每次要向服务器添加应用时都必须更新NGINX配置文件。

有没有办法构建重写以应用于任何子目录并保持Laravel的路由系统正常工作?

注意:我也尝试过这次重写rewrite (.*)/(.*)$ $1/index.php?$2,这对二级路线无效。

1 个答案:

答案 0 :(得分:1)

您的第一次捕获可能过于贪婪,您应该使用以下方法限制它:

rewrite ^(/[^/]+/[^/]+)/(.*)$ $1/index.php?$2 last;

在正则表达式上查看this useful resource