如果你的应用程序运行在 TLS / SSL 证书负载均衡器后,你可能会注意到你的应用程序有时不会生成 HTTPS 链接。通常这是因为你的应用程序被负载均衡器转发 80 端口的流量,不知道应该生成安全链接。
为了解决这个问题,你可以在 Laravel 应用程序中加载 App\Http\Middleware\TrustProxies 这个中间件,这使得你可以快速自定义应用程序信任的负载均衡器或代理。你信任的代理列表应该保存在这个中间件的属性 $proxies 数组中。除了配置可信代理,你还可以配置发送给代理的原始请求响应头:
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* 这个应用程序的可信代理列表
*
* @var array
*/
protected $proxies = [
'192.168.1.1',
'192.168.1.2',
];
/**
* 当前代理响应头映射关系
*
* @var array
*/
protected $headers = [
Request::HEADER_FORWARDED => 'FORWARDED',
Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR',
Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST',
Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT',
Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO',
];
}
如果你使用亚马逊 AWS 或其他的云负载均衡器,你可能不知道负载均衡器的实际 IP 地址。在这种情况下,你可以使用 ** 来信任所有代理:
/**
* 这个应用程序的可信代理列表
*
* @var array
*/
protected $proxies = '**';
网友评论