Za pomocą Apache Http Server jesteśmy w stanie w bardzo prosty sposób przeproxować naszą aplikacje z localhost na zewnątrz nie udostępniając przy tym aplikacji których nie chcieli byśmy aby inni mieli do nich dostęp.
Dzięki proxy nie musimy się obawiać że ktoś może przeprowadzić atak typu DDos na nasz serwer i dostać się na użytkownika: root, bo jak wiadomo człowiek jest leniwy i odpala Javowy serwer aplikacyjny będąc rootem, a nie użytkownikiem z okrojonymi prawami 🙂
Aby użyć proxy dla naszej aplikacji robimy tak:
Instalacja Apache2
apt-get install apache2
Aktywujemy proxowanie w apache
a2enmod proxy
I konfigurujemy naszą aplikację.
np. chcemy udostępnic aplikacje która jest dostępna tylko jako:
http://127.0.0.1:8080/
to robimy tak:
W VirtualHost dopisujemy:
ProxyRequests Off ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ <Location / > Order allow,deny Allow from all </Location>;
i już nasza aplikacja jest dostępna jako: http://szwadron.net/Drugim sposobem na proxowanie aplikacji jest wykorzystanie mod_proxy_ajp
które dodatkowo cachuje nam wyniki, czyli działa szybciej, choć nie udało mi się nigdy odczuć róznicy w działaniu obu modułów.
Aby przeproxować naszą aplikacje przez AJP wystaczy, że zamiast protokołu http wpiszemy ajp, a zamist portu 8080 wpiszemy port ajp na którym nasłuchuje nasz serwer aplikacyjny, np 8009.
Przyklad:
ProxyRequests Off ProxyPass / ajp://127.0.0.1:8009/ ProxyPassReverse / ajp://127.0.0.1:8009/ <Location / >; Order allow,deny Allow from all </Location>;
Jeśli chcieli byśmy aby nasza aplikacja była balansowana pomiędzy róznymi masznyami to wykorzystujemy do tego: mod_proxy_balancerPrzykładowo będziemy proxować tą samą aplikacje za pomocą mod_proxy_http
ProxyRequests Off <Proxy balancer://blog-balancer >; BalancerMember http://127.0.0.1:8080 BalancerMember http://INNY_HOST:8080 ... ProxySet lbmethod=byrequests </Proxy>; ProxyPass / balancer://blog-balancer/ ProxyPassReverse / balancer://blog-balancer/ <Location / >; Order allow,deny Allow from all </Location>;
Na podanym przykładzie mamy ustawioną metodę proxowania byrequestMetod proxowania jest więcej.
Więcej info o metodach proxowania na stronie mod_proxy_balancer
Do balancingu możemy wykorzystać zarówno moduł mod_proxy_http jak i mod_proxy_ajp, mogą być również wykorzystywane na przemian.
Jeśli będziemy mieć błąd z informacją o nieznanym wykorzeniu ProxyRequest lub podobnego podczas restartu apache oznacza to, że musimy wykonać dowiązanie symboliczne do dostępnych modułów w apache dotyczących proxy.
ln -s /etc/apache2/mods-available/proxy* /etc/apache2/mods-enabled/
Oczywiście możemy wybrać tylko te które nas interesują ale ja zawsze dowiązuje wszystkie proxy.