tomcat6 atrás de xinetd - ip do cliente real

3

Em server.xml , no Connector , especifico proxyPort como 80 .

Aqui está o serviço 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
}

Ainda assim, nos logs de acesso do Tomcat vejo linhas como as seguintes:

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 -

Alguma idéia?

    
por Poni 16.08.2012 / 23:31

2 respostas

0

O xinetd pode passar um cabeçalho HTTP X-FORWARDED-FOR ?

Se o tomcat estiver por trás de um proxy reverso (por exemplo, nginx) que passa por X-FORWARDED-FOR, ou seja:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Em seguida, você pode definir no seu tomcat server.xml para o AccessLogValve:

pattern="%{X-Forwarded-For}i %l %u %t %r %s %b %{User-Agent}i %{Referer}i"

E você receberá o endereço IP de origem do cliente no log de acesso.

Felicidades

    
por 16.08.2012 / 23:44
0

Não, nada pode ser feito. Você não pode fazer isso com xinetd. Pareceu trabalhar para mim, mas depois percebi que a maioria dos endereços IP no log ainda é 127.0.0.1.

Eu finalmente consegui fazer o Tomcat rodar como usuário (principalmente) restrito usando jsvc com o - opção de usuário. Também é possível com o iptables.

    
por 20.12.2015 / 13:39