Mod_JK, Jboss, First packet isn’t SYN

Recentemente deparei-me com uma situação na qual a firewall de hardware fazia drop às ligações estabelecidas entre o apache (mod_jk) e um servidor aplicacional Jboss.

Foram, adicionadas as seguintes flags aos workers do mod_jk:

socket_keepalive=1
socket_timeout=600

Foi, desta forma, ultrapassada a situação.

 

Criar certificado auto-assinado para servidor Apache

De forma a criar um certificado auto-assinado para um virtualhost Apache deve optar-se pela utilização do OpenSSL. Uma vez que esteja assegurado que o OpenSSL está instalado deve correr-se o seguinte comando para gerar o certificado e chave privada:

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mysitename.key -out mysitename.crt

Logar IP do Cliente e IP X-Forwarded-For IP no Apache

Quando o servidor apache fica atrás de um proxy ou loadbalancer o IP do cliente é substituido pelo IP do balanceador/proxy. Para ultrapassar esta limitação um cabeçalho/header costumizado foi desenvolvido pela equipe de desenvolvimento do squid, o X-Forwarded-For header.

A configuração default de logging do apache tem o seguinte formato:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/acces_log combined

São necessárias varias alterações à configuração por defeito de forma a que o X-Forwarded-For e o ip real do visitante seja logado. As alterações são as seguintes:

LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” proxy
SetEnvIf X-Forwarded-For “^.*\..*\..*\..*” forwarded
CustomLog “logs/access_log” combined env=!forwarded
CustomLog “logs/access_log” proxy env=forwarded

Estas alterações resultam no log do endereço IP de cada pedido.