【发布时间】:2019-08-11 04:36:15
【问题描述】:
我正在将我的应用程序迁移到新主机。 我现在面临着网址的问题。 例如,当我访问 www.mydomain.be/public/dashboard 时,应用会重定向到 myservername.azurewebsites.net/public/dashboard。
一位同事向我指出“反向代理背后的 Laravel 路由”,但这对我不起作用。 我用谷歌搜索并尝试了以下方法:
在 Middleware\TrustProxies.php 中
protected $proxies = [
'**'
];
在.env中
PROXY_URL = http://www.mydomain.be/public/
PROXY_SCHEMA = https
在路由/web.phpp中
$proxy_url = getenv('PROXY_URL');
$proxy_schema = getenv('PROXY_SCHEMA');
if (!empty($proxy_url)) {
URL::forceRootUrl($proxy_url);
}
if (!empty($proxy_schema)) {
URL::forceScheme($proxy_schema);
}
我也尝试在 routes/web.php 中使用
URL::forceRootUrl('https://www.mydomain.be/public');
但没有什么可以解决在 url-balk 中显示 myservername.azurewebsites.net/public/ 的事实。
【问题讨论】:
-
您正在重定向,您没有进行代理,因此任何假设您正在代理的解决方案都将不起作用,因为您正在重定向。解决方案是代理连接,例如当有人连接到托管
www.mydomain.be的服务器时,服务器 连接到 myservername.azurewebsites.net 转发所有请求信息并将响应传输回客户端。客户永远不应该知道这已经发生了。所有主要的网络服务器都有能力做到这一点,例如apache有mod_proxy和mod_proxy_http -
所以我不必在 laravel 中更改某些内容,但必须更改服务器设置?
-
在 Laravel 中,您仍然需要修改受信任的代理以信任传入的连接,但除此之外不需要任何其他更改。但是,无论您使用哪种方法,您都应该知道如何设置 forwarded headers,并相应地修改
TrustProxies中的$headers属性。
标签: php laravel laravel-5.8