【问题标题】:using laravel with apache and varnish将 laravel 与 apache 和 varnish 一起使用
【发布时间】:2013-07-20 05:03:20
【问题描述】:

所以我遇到了一个我无法找到任何资源的问题。我正在尝试使用 apache 和 varnish 运行 laravel。它工作正常,有一个例外,所有 url 都添加了 apache 正在运行的端口(8080)。所以当我转到链接时:

http://localhost/ 

它工作正常,但网站上的所有链接都显示如下:

http://localhost:8080/about-us

我在端口 80 上运行 varnish,在端口 8080 上运行 apache。我很确定是 varnish 导致了问题,因为当我在端口 80 上仅使用 apache 运行它时,它可以在不添加端口的情况下工作。有谁知道如何绕过它在其中添加端口。我无法通过谷歌找到有关此问题的任何信息。

【问题讨论】:

  • 你能发布你的 vcl 后端定义吗?我很确定 Varnish 在这种情况下不是罪魁祸首,而是 lavarel 的默认 url 重写

标签: php apache laravel varnish


【解决方案1】:

我不是 PHP 天才,但我所知道的所有 Web 框架都在入站请求中使用主机标头来生成非相对链接(附带问题:当资源位于同一主机上时,为什么要呈现绝对 URL首先?)。

因此,如果在您的 VCL 中,您将请求或后端请求的 (bereq) 主机标头重写为 localhost:8080 a la

set req.http.Host = "localhost:8080";

set bereq.http.Host = "localhost:8080";

或者在 apache 中做同样的事情,这就是导致问题的原因。如果不是这样,PHP 正在使用服务器运行的端口而不是主机标头来构造 URL,这几乎是普遍不受欢迎的行为,很可能是由于您的配置错误。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2014-08-11
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多