IP клиента через прокси

Здравствуйте.
Используем Flashphoner порт 8443 за nginx, есть необходимость получать в логах реальный IP клиента, а не IP nginx. Как можно это сделать? У себя в Java-приложении используем код
Code:
String realUserIp = request.getHeader("x-real-ip");
        if (realUserIp == null) {
            realUserIp = request.getRemoteAddr();
        }
Прямой доступ к Flashphoner :8443 закрыт, только через nginx по стандартному порту 443.
 

Max

Administrator
Staff member
Если в WCS_HOME/config/server.properties добавить
Code:
ws.map_custom_headers=true
то все HTTP-заголовки вида "X-" будут переданы в объекте custom {} при создании сессии.

Аналогичная тема.
 
Однако при этом сам Flashphoner будет считать, что запрос пришел с IP nginx, а не с IP клиента, и соответственно в логах Flashphoner я не смогу найти данных по IP клиента для расследования ошибок.
 

Max

Administrator
Staff member
В логах можно однозначно сопоставить
Например:
1. Клиент устанавливает соединение c WCS с адреса 172.16.1.10 через websockets
2. Nginx проксирует коннект и WCS видит хост и порт Nginx, например 127.0.0.1:56333
3. Кроме этого WCS видит HTTP заголовок X-Origin-IP:172.16.10, который Nginx положил в заголовки.
4. WCS передает информацию о коннекте на REST
Code:
/connect
{
  sessionId: "127.0.0.1:56333/172.16.1.11:8080",
  custom: {
   "X-Origin-IP":"172.16.10"
  }
}
Это видно в логе flashphoner_manager.log
Таким образом однозначно сопоставили коннект с Nginx "127.0.0.1:56333" с IP адресом пользователя "172.16.10".
 
Если в WCS_HOME/config/server.properties добавить
Code:
ws.map_custom_headers=true
то все HTTP-заголовки вида "X-" будут переданы в объекте custom {} при создании сессии.

Аналогичная тема.
Соответственно для wss нужно использовать
Code:
wss.map_custom_headers=true
?
 

Max

Administrator
Staff member
Да, эту настройку нужно добавить на стороне сервера.
Если ее добавить, WCS будет парсить HTTP заголовки, переданные по https/wss и складывать в объект 'custom'.
Nginx должен в этих заголовках передать реальный IP пользователя.
 
Top