Jak skonfigurować proxy Apache Webserver przed Apache Tomcat na Red Hat Linux
- 937
- 40
- Klaudia Woś
Cel
Naszym celem jest skonfigurowanie Apache HTTPD do pracy jako proxy przed kontenerem aplikacji Apache Tomcat.
Wersje systemu operacyjnego i oprogramowania
- System operacyjny: Red Hat Enterprise Linux 7.5
- Oprogramowanie: Apache Httpd, Apache Tomcat
Wymagania
Uprzywilejowany dostęp do systemu
Trudność
ŁATWY
Konwencje
- # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą
sudo
Komenda - $ - Biorąc pod uwagę polecenia Linux, które mają być wykonywane jako zwykły użytkownik niepewny
Wstęp
Używanie Apache HTTPD jako serwera proxy do kontenera aplikacji Apache Tomcat jest powszechną konfiguracją. Ma wiele przypadków użycia, najbardziej trywialnym jest obsługa treści statycznej z httpd
, zapewniając usługi wdrażające ciężką logikę biznesową z aplikacji napisanej w Javie, która znajduje się w kontenerze Tomcat.
Tworząc serwer proxy, możemy utworzyć rodzaj front-end do warstwy aplikacji, w której możemy wprowadzić środki bezpieczeństwa w serwisie internetowym, zastosować równoważenie obciążenia, używać przekierowania warunkowego lub użyć innych funkcji dostarczanych przez WebServer. W ten sposób nie musimy wdrażać żadnej z tych funkcji w naszej aplikacji i możemy skupić swoje możliwości samej usługi. Będziemy mieli w pełni funkcjonalny serwer internetowy dla użytkowników, niektóre adresy URL przekazywane cicho do kontenera aplikacji, które mogą być same w sobie nieorządne. Odpowiedzi aplikacji są przekazywane z powrotem do klientów, którzy nie będą wiedzieć, że mówili cokolwiek innego oprócz serwera internetowego - to znaczy, jeśli uważamy, że nie ujawniamy żadnych informacji (takich jak nieobsługiwane komunikaty o błędach) z aplikacji, która może sprawić, że domyślnie się, że jest więcej niż jedna warstwy.
Użyjemy protokołu AJP, który można użyć między serwisami internetowymi a kontenerami aplikacji opartymi na Javie, aby zapewnić możliwość zrównoważenia obciążenia między wieloma serwerami aplikacji - jednak w celu skonfigurowania równoważenia obciążenia jest poza zasięgiem tego samouczka.
Skonfigurujemy naszą konfigurację na Red Hat Linux 7.5, ale serwer Webserver Apache, moduł AJP i kontener aplikacji Apache Tomcat są dostępne wszędzie, a zatem ta konfiguracja jest przenośna z małymi korektami, takimi jak ścieżki systemu plików lub nazwy usług.
Instalowanie wymaganego oprogramowania
Najpierw musimy zainstalować usługi, których będziemy korzystać. W zrównoważonej konfiguracji serwera Tomcat może znajdować się na różnych maszyna.
# Yum Zainstaluj httpd Tomcat Tomcat-Webapps
Instalujemy Tomcat-Webapps
Do celów testowych w tym pakiecie jest przykłady aplikacji internetowej wdrożonej na naszym serwerze Tomcat podczas instalacji. Użyjemy tej aplikacji, aby przetestować, że nasza konfiguracja działa zgodnie z przeznaczeniem.
Teraz możemy włączyć i uruchomić nasz serwer Tomcat:
# Systemctl Włącz Tomcat
# Systemctl start tomcat
I nasz WebServer:
# Systemctl Włącz HTTPD
# Systemctl start httpd
Domyślny httpd
Instalacja zawiera moduły proxy, których potrzebujemy. Aby sprawdzić, że tak jest, możemy zapytać o serwer sieciowy Apachectl
:
# apachectl -m | GREP AJP proxy_ajp_module (udostępniony)
Kopiuj Notatka 1.x Użyj wersji Apache mod_jk
moduł zamiast proxy_ajp
.
Konfiguracja HTTPD
Przykłady aplikacji internetowej wdrożona w Tomcat są publikowane po instalacji domyślnie serwer-URL: 8080/Przykłady
. Będziemy żądania proxy do portu serwera 80 (domyślny port HTTP), żądając czegoś z Serwer-URL/przykłady
do obsługi przykłady
Aplikacja internetowa wdrożona w Tomcat. Żądania przychodzące do dowolnego innego adresu URL na serwerze będą obsługiwane przez serwer WWW. Skonfigurujemy statyczną treść, aby pokazać tę funkcjonalność.
W naszym przykładzie serwer jest wywoływany WS.foobar.com
. Aby proxy działał, utwórz plik tekstowy z ulubionym edytorem w katalogu konfiguracyjnym WebServer, czyli /etc/httpd/conf.D
na smaku Red Hat, z rozszerzeniem .conf
. Nasza konfiguracja nie wymaga, aby tomcat był bezpośrednio osiągalny, więc używamy Lokalny Gospodarz
jako host cel w /etc/httpd/conf.d/example_proxy.conf
plik:
Servername WS.foobar.Com ProxyRequests Off proxypass/Przykłady AJP: // Localhost: 8009/Przykłady ProxYpassreverse/Przykłady AJP: // LocalHost: 8009/Przykłady
Kopiuj Aby być po bezpiecznej stronie, możemy sprawdzić, czy nasza konfiguracja jest poprawna Apachectl
:
# APACHECTL CONFIGTEST Składnia OK
Kopiuj Jeśli test konfiguracji zwraca błąd, taki jak następujący:
Nie można rozwiązać nazwy hosta WS.foobar.com - ignorowanie!
Jeśli oznacza, że nasz Nazwa serwera
Dyrektywa jest nieprawidłowa, ponieważ nie można jej rozwiązać. Albo musimy go zarejestrować w (lokalnym lub globalnym) DN, albo podać linię w /etc/hosts
Plik zawierający publiczny adres IP hosta, a następnie nazwa, którą podaliśmy w powyższej konfiguracji. Jeśli plik hostów zawiera już adres IP o innej nazwie (być może prawdziwa nazwa hosta), możemy dodać Servername po nazwie hosta w tej samej linii, konfiguracja będzie działać.
Po pomyślnym testie musimy zastosować nową konfigurację, ponownie uruchamiając WebServer:
# Systemctl restart httpd
Konfiguracja Tomcat
Z domyślną instalacją kontener Tomcat będzie słuchać żądań AJP na wszystkich interfejsach na porcie 8009. Można to zweryfikować w głównym pliku konfiguracyjnym:
# Widok/usr/share/tomcat/conf/serwer.xml […] […]
Kopiuj Jeśli nie potrzebujemy kontenera Tomcat i aplikacji w środku, aby można było samodzielnie osiągnąć, możemy ustawić każdy złącze do słuchania tylko na LocalHost:
Adres złącza = "127.0.0.1 "port =…"
Aby złożyć wniosek, możemy ponownie uruchomić Tomcat z:
# Systemctl restart tomcat
Na naszym komputerze laboratoryjnym tego nie zrobi, ponieważ musimy zobaczyć, że podajemy tę samą treść w obu portach 80
I 8080
.
Testowanie
Nasza minimalna konfiguracja proxy AJP jest kompletna, możemy to przetestować. Z wiersza poleceń możemy wywołać przykłady
Aplikacja bezpośrednio na porcie 8080
:
$ wget http: // wS.foobar.Com: 8080/Przykłady-2018-09-13 11: 00: 58-- http: // WS.foobar.COM: 8080/Przykłady rozwiązywania WS.foobar.com (WS.foobar.com)… . 10.104.1.165 Łączenie z WS.foobar.com (WS.foobar.com) | 10.104.1.165 |: 8080… . połączony. Wysłany prośba HTTP, czekając na odpowiedź… . 302 Znaleziono Lokalizacja:/przykłady/[Następujące]-2018-09-13 11: 00: 58-- http: // WS.foobar.COM: 8080/ Przykłady/ ponowne wykorzystanie istniejącego połączenia z WS.foobar.com: 8080. Wysłany prośba HTTP, czekając na odpowiedź… . 200 OK Długość: 1253 (1.2K) [tekst/html] Zapisanie na: „przykłady” 100%[====================================== ================================================== ================================================== ==================================>] 1253 --.-K/S w 0S 2018-09-13 11:00:58 (102 MB/s)-„Zatrzymane przykłady” [1253/1253]
Kopiuj I zobacz dostarczoną zawartość:
$ Przykłady ogona Przykłady Apache Tomcat
- Przykłady serwletów
- Przykłady JSP
- Przykłady WebSocket (JSR356)
- Przykłady WebSocket przy użyciu deprecjonowanego zastrzeżonego API Apache Tomcat