【问题标题】:Digital Ocean - App Platform - Laravel Filament数字海洋 - 应用平台 - Laravel Filament
【发布时间】:2022-11-07 15:42:32
【问题描述】:

我正在托管一个完整的堆栈应用程序。对于前端,我使用 Next JS 作为前端和后端 Laravel,filament 作为仪表板。

我尝试在 Digital Oceans App Platform 上托管所有内容,在该平台上,我为前端提供了正常的基本路由,而 laravel 后端则提供了 /app 路由。 为了让 Laravel 知道 URL 发生了变化,我将环境变量设置为:

APP_URL=${APP_URL}/app

现在的问题是,当我尝试登录我的后端(example-site/app/admin/login)时,我得到 CSS 文件的 404 并且登录不起作用。

细丝似乎完全没有意识到 URL 发生了变化。它不仅是 CSS,而且当我单击按钮时,它还会尝试将我重定向到基本 url。

如何让 Filament 知道 URL 已更改?现在我正在考虑将 laravel 应用程序移动到根文件夹并将前端托管在 vercel 上。

【问题讨论】:

    标签: web-deployment digital-ocean-apps laravel-filament


    【解决方案1】:

    在 AppServiceProvider 中 boot()

    if (app()->isProduction()) {
     URL::forceScheme('https');
    }
    

    【讨论】:

    • 感谢你的回答。我已经做过了一个子文件夹。
    • 哦,我错过了子文件夹,尝试添加这个 URL::forceRootUrl(config('app.url'));波纹管力计划
    【解决方案2】:

    我也在 NGINX 服务器上遇到了这个问题“livewire.js - 404 not found”。 相同的应用程序在 apache2 环境中运行良好。

    livewire 发生的事情(除非资产​​已发布并实际存在于服务器上,因此 nginx 可以为它们提供服务)是 livewire.js 文件由 laravel 应用程序构建/提供......这意味着 PHP。但是在默认的 nginx 服务器配置中,请求永远不会到达那么远,nginx 只是找不到静态 js 文件并返回 404 ...永远不会将请求传递给 laravel 应用程序。

    有 2 种解决方案可以解决此问题:

    1.) 将 livewire.js 文件发布为任何其他静态文件,以便 nginx 可以返回它们。

    2.)在 nginx 配置中添加一行代码,告诉 nginx 检查是否可以在磁盘/缓存上找到静态文件,如果没有发送请求到 php-fpm(在我们的例子中是 index.php 文件)所以它可以动态构建。

    这是代码...通常您的 nginx 配置中可能已经有一个指令,它告诉 nginx 如何处理静态文件...只需在指令中添加这一行:

    try_files $uri /index.php?$query_string;
    

    因此,添加到 nginx 服务器配置的完整指令可能如下所示:

    location ~* .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
           try_files $uri /index.php?$query_string;
           access_log        off;
           log_not_found     off;
           expires           14d;
    }
    

    如果您只希望 js 文件具有此行为,请创建一个新指令并将 js 从上一个示例中的列表中删除。

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 2022-01-04
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2022-08-05
      • 2013-12-16
      • 1970-01-01
      • 2018-02-22
      相关资源
      最近更新 更多