В 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 -
Любые идеи?
Нет, ничего не поделаешь. Вы не можете сделать это с помощью xinetd. Мне показалось, что это работает, но затем я понимаю, что большинство IP-адресов в журнале по-прежнему 127.0.0.1.
Мне наконец удалось запустить Tomcat как (в основном) ограниченный пользователь, используя jsvc с параметром --user. Это также возможно с помощью iptables.
Может ли xinetd пройти X-FORWARDED-FOR HTTP-заголовок?
Если 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-адрес клиента в журнале доступа.
Ура