Я получил 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" дал мне интересные результаты.
пожалуйста прочтите этот вопрос и ответ; если это не помогает, оставьте комментарий ниже, спасибо