JBoss Netty получает IP пользователя (Http-запрос) - PullRequest
1 голос
/ 29 июня 2011

Мне нужно регистрировать IP-адреса пользователя для каждого запроса на нашем сервере JBoss Netty. Я подумал:

MessageEvent e;
e.getChannel().getRemoteAddress();

был правильный ответ, но это всегда возвращает 127.0.0.1, и мне нужен фактический IP-адрес клиента. Исходя из Rails я проверил, как они узнают ip, из документа:

Определяет исходящий IP-адрес. REMOTE_ADDR является стандартом, но будет Ошибка, если пользователь находится за прокси. HTTP_CLIENT_IP и / или HTTP_X_FORWARDED_FOR устанавливается прокси, так что проверьте это, если REMOTE_ADDR является прокси. HTTP_X_FORWARDED_FOR может быть запятой список с разделителями в случае нескольких цепочечные прокси; последний адрес которому не доверяют исходящий IP.

Так я должен проверить все заголовки в Netty или есть более простой способ?

1 Ответ

3 голосов
/ 29 июня 2011

Хорошо, у меня есть ответ. Использование ChannelHandlerContext вместо MessageEvent делает свое дело.

SocketAddress remoteAddress = ctx.getChannel().getRemoteAddress();
...