Laravel 项目使用负载均衡(load balancers)或者反向代理(reverse proxies)时,可能会遇到HTTPS检测或客户端IP地址不正确的问题。Laravel 的 TrustProxies 中间件提供了解决方案。
理解 TrustProxies 的必要性
使用负载均衡或反向代理时,传入的请求需要经过这个中间层才能到达你的应用。这可能导致两个问题:
- HTTPS 检测可能失败,导致生成不安全的 URLs;
- 客户端的IP地址可能被错误地识别为代理的IP,而不是实际的客户端。
TrustProxies 中间件允许你的应用程序信任代理设置的标头,从而解决这些问题。
配置 TrustProxies
在 bootstrap/app.php 文件中编辑:
1 | ->withMiddleware(function (Middleware $middleware) { |
此配置告诉Laravel信任IP地址为 192.168.1.1和 10.0.0.0/8 范围内的任何IP的代理。
信任所有代理
1 | ->withMiddleware(function (Middleware $middleware) { |
须慎用。
配置可信任的 Headers
1 | use Illuminate\Http\Request; |
参考: