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

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.

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

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

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

Я не знаю, сколько вы сделали в Google, но "apache proxy real ip" дал мне интересные результаты.

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