【问题标题】:Multiple Laravel Projects on a single domain with NGINX使用 NGINX 的单个域上的多个 Laravel 项目
【发布时间】:2017-03-08 10:38:00
【问题描述】:

在工作中,我们有一个带有临时域的临时服务器,例如https://staging.example.com。我们最近决定在新服务器上从 Apache 切换到 NGINX,但我们的 Laravel 路由存在问题。

我们所有的 laravel 应用程序都位于临时服务器上的子目录中,就像这样。

我已尝试按照Laravel docs 中的指定配置 NGINX conf 文件,但在访问任何 2 级路由时得到 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 conf 文件。

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

注意:我也尝试过这种重写 rewrite (.*)/(.*)$ $1/index.php?$2,但这不适用于 2 级路由。

【问题讨论】:

    标签: laravel nginx


    【解决方案1】:

    你的第一次捕获可能太贪心了,你应该通过使用来限制它:

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

    请参阅this useful resource 了解正则表达式。

    【讨论】:

    • 您将公共部分放入重写的最后一个解决方案对我有用,但其他两个更动态的解决方案不起作用。我将继续修改您拥有的解决方案,因此我不必将公共路径硬编码到重写中。谢谢!
    • 我已更新答案以在第一次捕获中接受两个路径元素。
    猜你喜欢
    • 2018-01-28
    • 2020-01-06
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2019-03-30
    相关资源
    最近更新 更多