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-адрес клиента в журнале доступа.

ура

Другие вопросы по тегам