Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как получить реальный ip адрес клиента?, nginx+php-frm
inpost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




Привет! Я не знаю, правильно ли выбран админами php-frm, может стоило что-то другое брать, но как я понял после гугления - если nginx собран с php-frm , то mod_rpaf не будет работать. Тут же начал гуглить, и натыкаюсь на десяток статей, где написано, что если админы используют mod_rpaf на сервере - то прогнать прочь их надо. Последней каплей стало то, что Zend FrameWork пользуется не REMOTE_ADDR, а целым классом по определению ip. В общем я в замешательстве, стоит ли искать альтернативы на сервере вроде mod_rpaf, или взять какую-нибудь функцию или класс по определению ip адреса?
Что скажите.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Если между nginx и php-fpm ничего нет, то в php remote_addr будет иметь ip клиента.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




apache+nginx+php-fpm, где apache - динамика, nginx - статика.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 17 дней
Карма: 111




тут такая история как настроен nginx

/**
* Возвращает реальный ip пользователя
*
@return string
*/

function getUserHostAddress()
{

if (isset($_SERVER["HTTP_CLIENT_IP"])) {
return $_SERVER["HTTP_CLIENT_IP"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
return $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED"])) {
return $_SERVER["HTTP_X_FORWARDED"];
} elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])) {
return $_SERVER["HTTP_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_FORWARDED"])) {
return $_SERVER["HTTP_FORWARDED"];
} elseif (isset($_SERVER["HTTP_X_REAL_IP"])) {
return $_SERVER["HTTP_X_REAL_IP"];
} else {
return $_SERVER["REMOTE_ADDR"];
}
}


в идеале хватает указанного выше

В случае если nginx настроен плохо, то ip будет локальным


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 17 дней
Карма: 111




по сути хватит тебе сверить свой реальный ip с возвращаемым из нужного места. wink.gif
и использовать


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




HTTP_ - это всё, что можно передать клиентом, в свою очередь REMOTE_ADDR не передаётся клиентом. Отсюда первая проверка на HTTP_CLIENT_IP - вернёт полную подделку, а не настоящий ip. Разве нет?


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 17 дней
Карма: 111




в идеале эти заголовки отдает nginx X_FORWARDED_FOR
при проксировании запроса, на счет этого стоит уточнить у админов, как у них ip транслируется в nginx тому и источнику и доверять

притом что ip клиента скорее информационное нежели надежное условие, но тут ИМХО


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
[x] Дата
Цитировать сообщение

Пользователь сейчас на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1672
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 9 дней
Карма: 94




Проблема не в определении IP,проблема в настройки серверов.
;)

https://help.ubuntu.com/community/Nginx/ReverseProxy


zend Как раз использует только REMOTE_ADDR
Алтернативы как таковой нет,если только провериить X-Forwarded-For прокси это или нет.Что zend и делает.
В самом начале коммнетарий почему они используют REMOTE_ADDR

<?php
/**
* Zend Framework (
http://framework.zend.com/)
*
*
@link http://github.com/zendframework/zf2 for the canonical source repository
*
@copyright Copyright © 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/


namespace Zend\Http\PhpEnvironment;

/**
* Functionality for determining client IP address.
*/

class RemoteAddress
{
/**
* Whether to use proxy addresses or not.
*
* As default this setting is disabled - IP address is mostly needed to increase
* security. HTTP_* are not reliable since can easily be spoofed. It can be enabled
* just for more flexibility, but if user uses proxy to connect to trusted services
* it's his/her own risk, only reliable field for IP address is $_SERVER['REMOTE_ADDR'].
*
*
@var bool
*/

protected $useProxy = false;

/**
* List of trusted proxy IP addresses
*
*
@var array
*/

protected $trustedProxies = array();

/**
* HTTP header to introspect for proxies
*
*
@var string
*/

protected $proxyHeader = 'HTTP_X_FORWARDED_FOR';


/**
* Changes proxy handling setting.
*
* This must be static method, since validators are recovered automatically
* at session read, so this is the only way to switch setting.
*
*
@param bool $useProxy Whether to check also proxied IP addresses.
*
@return RemoteAddress
*/

public function setUseProxy($useProxy = true)
{
$this->useProxy = $useProxy;
return $this;
}

/**
* Checks proxy handling setting.
*
*
@return bool Current setting value.
*/

public function getUseProxy()
{
return $this->useProxy;
}

/**
* Set list of trusted proxy addresses
*
*
@param array $trustedProxies
*
@return RemoteAddress
*/

public function setTrustedProxies(array $trustedProxies)
{
$this->trustedProxies = $trustedProxies;
return $this;
}

/**
* Set the header to introspect for proxy IPs
*
*
@param string $header
*
@return RemoteAddress
*/

public function setProxyHeader($header = 'X-Forwarded-For')
{
$this->proxyHeader = $this->normalizeProxyHeader($header);
return $this;
}

/**
* Returns client IP address.
*
*
@return string IP address.
*/

public function getIpAddress()
{
$ip = $this->getIpAddressFromProxy();
if ($ip) {
return $ip;
}

// direct IP address
if (isset($_SERVER['REMOTE_ADDR'])) {
return $_SERVER['REMOTE_ADDR'];
}

return '';
}

/**
* Attempt to get the IP address for a proxied client
*
*
@return false|string
*/

protected function getIpAddressFromProxy()
{
if (!$this->useProxy) {
return false;
}

$header = $this->proxyHeader;

if (!isset($_SERVER[$header]) || empty($_SERVER[$header])) {
return false;
}

// Extract IPs
$ips = explode(',', $_SERVER[$header]);
// trim, so we can compare against trusted proxies properly
$ips = array_map('trim', $ips);
// remove trusted proxy IPs
$ips = array_diff($ips, $this->trustedProxies);

// Any left?
if (empty($ips)) {
return false;
}

// Return right-most
$ip = array_pop($ips);
return $ip;
}


/**
* Normalize a header string
*
* Normalizes a header string to a format that is compatible with
* $_SERVER
*
*
@param string $header
*
@return string
*/

protected function normalizeProxyHeader($header)
{
$header = strtoupper($header);
$header = str_replace('-', '_', $header);
if (0 !== strpos($header, 'HTTP_')) {
$header = 'HTTP_' . $header;
}
return $header;
}
}



--------------------
Programming: Private lessons via skype £45/h

Частные уроки в Лондоне / удаленно по skype.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alexbel2404  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1084
Пользователь №: 28824
На форуме: 5 лет, 4 месяца, 16 дней
Карма: 55




Так чем тебя mod_rpaf не устраивает?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




админы сказали, что mod_rpaf не работает в связке nginx+php-frm. Это они так сказали.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alexbel2404  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1084
Пользователь №: 28824
На форуме: 5 лет, 4 месяца, 16 дней
Карма: 55




ну если апача нет, в связке с nginx, то этот мод просто не к чему цеплять) Если же есть, то почему он не работает, странно. Я правда всегда ставлю nginx+apache+mod_php
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




alexbel2404
Да писали в гугле где-то, что не работает. Ссылки были, когда гуглил. Не знаю что сделали, но теперь нормально IP отображается в REMOTE_ADDR. Зато мнение других послушать было интересно.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 24 дня
Карма: 27




Не могу получить IP пользователя (выходит 127.0.0.1) стоит remoteip_module. Не php-frm.

Nginx:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Apache:
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса