tomcat6 за xinetd - реальный клиент ip
В server.xml
на Connector
Я уточняю proxyPort
как 80
,
Вот сервис xinetd:
service http
{
socket_type = stream
protocol = tcp
user = tomcat6
wait = no
bind = 0.0.0.0
port = 80
redirect = 127.0.0.1 8080
disable = no
flags = REUSE
log_type = FILE /var/log/xinetd_http_access.log
log_on_success -= PID HOST DURATION EXIT
per_source = UNLIMITED
instances = UNLIMITED
}
Тем не менее, в журналах доступа Tomcat я вижу такие строки:
127.0.0.1 - - [17/Aug/2012:00:23:23 +0300] "GET / HTTP/1.1" 200 1975
127.0.0.1 - - [17/Aug/2012:00:23:23 +0300] "GET /_static/css/global.css HTTP/1.1" 304 -
Есть идеи?
2 ответа
Нет, ничего не поделаешь. Вы не можете сделать это с помощью xinetd. Мне показалось, что это работает, но потом я понимаю, что большинство IP-адресов в журнале все еще 127.0.0.1.
Мне наконец удалось запустить Tomcat как (в основном) пользователь с ограниченными правами, использующий jsvc с опцией --user. Это также возможно с iptables.
Может ли xinetd передавать HTTP-заголовок X-FORWARDED-FOR?
Если tomcat находится за обратным прокси-сервером (например, nginx), который передает X-FORWARDED-FOR, то есть:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Затем вы можете установить в своем tomcat server.xml для AccessLogValve:
pattern="%{X-Forwarded-For}i %l %u %t %r %s %b %{User-Agent}i %{Referer}i"
И вы получите исходный IP-адрес клиента в журнале доступа.
ура