Назад | Перейти на главную страницу

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 -

Любые идеи?

Нет, ничего не поделаешь. Вы не можете сделать это с помощью 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-адрес клиента в журнале доступа.

Ура