Glassfish3 Apache mod_proxy_ajp и недостающие заголовки

Я получил Apache 2.2.22 с mod_proxy и mod_proxy_ajp. Вот моя конфигурация mod_proxy:

    ProxyRequests Off      
    ProxyPreserveHost On   
    ProxyErrorOverride On
    ProxyPass / ajp://localhost:8009/
    ProxyPassReverse / http://www.myservice.com/

Обычно это работает нормально, но когда вы просматриваете логи mod_proxy, вы видите, что пропущено несколько заголовков http.

Header[0] [Host] = [www.myservice.com]
Header[1] [User-Agent] = [Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0]
Header[2] [Accept] = [text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
Header[3] [Accept-Language] = [q=0.94,en-US;q=0.88,en;q=0.82,en-EN;q=0.76,fr-FR;q=0.71,fr;q=0.65,en-GB;q=0.18,ru;q=0.12,en-PL;q=0.06]
Header[4] [Accept-Encoding] = [gzip, deflate]
Header[5] [Cookie] = [_ga=GA1.2.190053753.1379368584; JSESSIONID=2f9c23613e546d91f2f59b6e4d81]

Но проблема в том, что отсутствует заголовок REMOTE_ADDR, и мой сервер Glassfish3 не может обнаружить удаленный адрес запроса и возвращает ноль.

Я не уверен, но, возможно, проблема не в mod_proxy, а в glassfish.

2 ответа

Я решил эту проблему, установив дополнительный заголовок X-Forwarded-For на удаленный адрес пользователя.

        RewriteCond %{REMOTE_ADDR} (.*)
        RewriteRule .* -    [E=SEQ_ADDR:%1]
        RequestHeader set X-Forwarded-For %{SEQ_ADDR}e

И чем использовать простой фильтр в приложении, чтобы прочитать значение этого заголовка.

Я не знаю, сколько гуглил вы, но "Apache Proxy Real IP" дал мне несколько интересных результатов.

пожалуйста, прочитайте это q & a; если это не поможет, оставьте комментарий ниже, спасибо

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