Режим обслуживания Laravel -- разрешить ip не работает

Я пытаюсь разрешить свой общедоступный IP-адрес в Интернете через режим обслуживания в laravel на vps.

Работает ли команда --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.

person Victordb    schedule 19.02.2019    source источник
comment
Я никогда не тестировал это на удаленном веб-сайте. Но, как я вижу, это должно Вы можете добавить фиктивный маршрут для проверки вашего IP-адреса: Route::get('/what-is-my-ip', function(){ return request()->ip();}); и убедиться, что вы разрешаете правильный IP-адрес   -  person Clément Baconnier    schedule 19.02.2019
comment
Вы правы, я сделал, как вы сказали, и почему-то он показывает другой ip, чем тот, который показывает google show my ip. Я использую cloudflare на vps, может ли это быть причиной? Если вы опубликуете свой комментарий в качестве ответа, я проголосую за его правильность. У вас есть идеи, почему IP-адрес отличается? Благодарю вас!   -  person Victordb    schedule 19.02.2019
comment
По моему опыту, IP-сервисы не такие умные. Некоторые из них показывают (как я думаю) IP-адрес моего провайдера. Я на Ubuntu делал и делал псевдоним myip='curl https://ipinfo.io/ip' Я знаю, что это правильно.   -  person Clément Baconnier    schedule 19.02.2019
comment
https://ipinfo.io/ip показывает мне тот же IP-адрес, что и Google. Но почему-то мой впс Route::get('/what-is-my-ip', function(){ return request()->ip();}); показывает другой айпи. Если я использую это в режиме обслуживания, он работает, но очень странно, потому что показывает совершенно другой IP-адрес, чем любые другие show my ip сайты.   -  person Victordb    schedule 19.02.2019
comment
Действительно странно. Просто убедитесь, что Laravel не видит один и тот же IP-адрес для всех. Если вы находитесь за cloudflare, я полагаю, что он вернет вам IP-адрес canflare вместо IP-адреса пользователя. laracasts.com/discuss/channels/laravel/cloudflare-and-user- IP-адрес   -  person Clément Baconnier    schedule 19.02.2019


Ответы (1)


Вы можете проверить IP-адрес, который видит ваше приложение, и разрешить его:

Route::get('/what-is-my-ip', function(){ 
    return request()->ip();
});

Но будьте осторожны, если вы используете сетевую службу доставки контента, например cloudflare, вы увидите IP-адрес службы, а не пользователя. Это означает, что у всех будет один и тот же IP.

Например, Cloudflare, вы можете заставить его работать, переустановив правильный IP-адрес пользователя в public/index.php

<?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

person Clément Baconnier    schedule 19.02.2019
comment
Просто будьте осторожны, слепо доверяя любому, кто устанавливает заголовок HTTP_CF_CONNECTING_IP. Возможно, вы захотите изучить параметры доверенных прокси Laravel. - person GGGforce; 29.01.2020