Chr*_*fer 8 php caching routes laravel
我在反向代理后面运行一个laravel项目,这就是为什么我需要强制使用根url和scheme的原因:
URL::forceRootUrl($proxy_url);
URL::forceScheme($proxy_schema);
Run Code Online (Sandbox Code Playgroud)
我将其添加到我的顶部,/routes/web.php并且在运行之前一直运行良好:
php artisan optimize
Run Code Online (Sandbox Code Playgroud)
它在/bootstrap/cache 没有强制URL和方案的情况下缓存了路由,因此现在我所有的URL都指向错误的根URL。
我尝试将代码移至/Providers/AppServiceProvider.php(register和boot),以使其在缓存路由时生效,但是没有运气。
我必须手动删除路由缓存文件,/bootstrap/cache才能使路由重新工作。
缓存路由时,它是否生效?
编辑:我也试图创建一个全局中间件,在其中我执行强制URL和模式。在缓存路由之前,它仍然可以正常工作,但是在运行php artisan optimize路由时,这再次是不正确的。
Using URL::forceRootUrl and URL::forceScheme seems like a work-around for working with reverse proxies. The clean solution for it would be to add a trusted proxies in your configuration. This post explains the feature in full. But it comes down to:
App\Http\Middleware\TrustProxies middleware$proxies property with the IP(s) of your load balancer protected $proxies = [
'192.168.1.1',
'192.168.1.2',
];
Run Code Online (Sandbox Code Playgroud)
/routes/web.phpURL::forceRootUrl($proxy_url);
URL::forceScheme($proxy_schema);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |