Laravel 维护模式 --allow ip not working
Posted
技术标签:
【中文标题】Laravel 维护模式 --allow ip not working【英文标题】:Laravel maintenance mode --allow ip not working 【发布时间】:2019-02-19 10:05:35 【问题描述】:我正在尝试在 vps 上的 laravel 中通过维护模式允许我的公共互联网 ip。
--allow
命令是在互联网上工作还是只在本地主机上工作?
因为我无法使用以下命令通过维护模式页面:
$ php artisan down --allow=xx.xx.xx.xx (my public internet ip)
Application is now in maintenance mode.
$ php artisan up
Application is now live.
【问题讨论】:
我从未在远程网站上测试过这个。但正如我看到的it should 您可以添加一个虚拟路由来验证您的 IP:Route::get('/what-is-my-ip', function() return request()->ip(););
并验证您是否允许正确的 IP 地址
你是对的,我按照你说的做了,由于某种原因,它显示的 IP 比 google show my ip
显示的 IP 不同。我在 vps 上使用 cloudflare 这可能是一个原因吗?如果您发表评论作为答案,我将投票正确。你知道为什么ip不同吗?谢谢!
根据我的经验,IP 服务并不那么聪明。其中一些显示(我认为是)我的提供商 IP。我在 Ubuntu 上做了一个别名 myip='curl https://ipinfo.io/ip'
我知道这个自己是正确的。
https://ipinfo.io/ip
向我显示了与谷歌相同的 IP。但由于某种原因,我的 vps Route::get('/what-is-my-ip', function() return request()->ip(););
显示了另一个 IP。如果我在维护模式下使用它,它可以工作,但非常奇怪,它显示的 ip 与任何其他 show my ip
站点完全不同。
确实很奇怪。请确保 Laravel 不会为每个人看到相同的 IP。如果你支持 cloudflare,我相信它会返回 canflare IP 而不是用户 IP。 laracasts.com/discuss/channels/laravel/cloudflare-and-user-ip
【参考方案1】:
您可以验证您的应用程序看到的 IP 地址并允许它:
Route::get('/what-is-my-ip', function()
return request()->ip();
);
但请注意,如果您使用内容交付网络服务(如 cloudflare),您将看到服务的 IP 而不是用户。这意味着,每个人都将拥有相同的 IP。
例如Cloudflare,您可以通过在public/index.php
中重新设置正确的用户IP来使其工作
<?php
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"]))
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
更多解释的来源:https://laracasts.com/discuss/channels/laravel/cloudflare-and-user-ip
【讨论】:
小心盲目地相信任何设置HTTP_CF_CONNECTING_IP
标头的人。你可能想看看 Laravel 的信任代理选项。以上是关于Laravel 维护模式 --allow ip not working的主要内容,如果未能解决你的问题,请参考以下文章