Jak skonfigurować Nginx Reverse Proxy dla Apache?
Nginx i Apache to dwa najpopularniejsze serwery internetowe na świecie, z których każdy ma swoje mocne strony. Apache jest znany ze swojej elastyczności i solidnego systemu modułów, podczas gdy Nginx jest preferowany ze względu na wysoką wydajność i niskie zużycie zasobów, szczególnie w przypadku serwowania treści statycznych. W wielu scenariuszach korzystne jest połączenie tych dwóch rozwiązań poprzez wykorzystanie Nginx jako odwrotnego serwera proxy przed Apache. Taka konfiguracja pozwala Nginx obsługiwać przychodzące żądania i serwować pliki statyczne, podczas gdy Apache obsługuje dynamiczną zawartość, taką jak skrypty PHP lub aplikacje oparte na bazach danych.
W tym artykule przeprowadzimy Cię przez proces konfigurowania Nginx jako odwrotnego serwera proxy dla Apache, zapewniając płynną i wydajną konfigurację serwera WWW.
Czym jest odwrotny serwer proxy?
Odwrotny serwer proxy to serwer, który znajduje się przed jednym lub kilkoma serwerami zaplecza i przekazuje żądania klientów do odpowiedniego serwera. W tym przypadku Nginx będzie działał jako odwrotny serwer proxy, przekazując żądania do Apache, który będzie obsługiwał dynamiczną zawartość.
Używanie Nginx jako odwrotnego serwera proxy oferuje kilka korzyści:
- Lepsza wydajność: Nginx doskonale radzi sobie z szybkim serwowaniem plików statycznych (np. obrazów, CSS, JavaScript), zmniejszając obciążenie Apache.
- Równoważenie obciążenia: Nginx może dystrybuować ruch między wieloma serwerami backendowymi, poprawiając dostępność i niezawodność.
- SSL Termination: Nginx może obsługiwać szyfrowanie SSL, odciążając Apache.
- Bezpieczeństwo: Nginx może zapewnić dodatkowe funkcje bezpieczeństwa, takie jak filtrowanie żądań i ograniczanie szybkości.
Krok 1: Instalacja Nginx i Apache
Przed skonfigurowaniem Nginx jako odwrotnego proxy, upewnij się, że zarówno Nginx, jak i Apache są zainstalowane na twoim serwerze. Można je zainstalować za pomocą menedżera pakietów, w zależności od dystrybucji systemu Linux.
Dla Debiana/Ubuntu:
Dla CentOS/RHEL:
Po zainstalowaniu zarówno Nginx, jak i Apache, uruchom i włącz obie usługi, aby upewnić się, że działają podczas uruchamiania:
Krok 2: Konfiguracja Apache
Apache będzie działał jako serwer zaplecza, przetwarzając dynamiczne żądania, takie jak skrypty PHP. Upewnij się, że Apache jest skonfigurowany do nasłuchiwania na określonym porcie, zwykle porcie
8080
80
80
Skonfiguruj Apache do nasłuchiwania na porcie 8080:
- Otwórz plik konfiguracyjny Apache:
- Znajdź linię określającą port, na którym nasłuchuje Apache (zwykle) i zmień ją na:
Listen 80
- Zapisz zmiany i zamknij edytor.
- Uruchom ponownie Apache, aby zastosować zmiany:
Teraz Apache jest skonfigurowany do nasłuchiwania na porcie
8080
80
Krok 3: Skonfiguruj Nginx jako odwrotny serwer proxy
Następnie musimy skonfigurować Nginx, aby działał jako odwrotny serwer proxy, przekazując żądania do Apache. Utworzymy wirtualnego hosta w Nginx, który nasłuchuje na porcie
80
8080
Utwórz konfigurację wirtualnego hosta Nginx:
- Otwórz lub utwórz nowy plik konfiguracyjny wirtualnego hosta w Nginx:
- Dodaj następującą konfigurację do pliku:
W tej konfiguracji:
- : Nginx nasłuchuje na porcie
listen 80
dla żądań przychodzących.80
- : domena lub adres IP, który będzie obsługiwany przez Nginx.
server_name
- : Przekazuje żądania do Apache, który nasłuchuje na porcie
proxy_pass
.8080
- : Przekazuje różne nagłówki do Apache, w tym oryginalny adres IP klienta i protokół.
proxy_set_header
- Blokdla zawartości statycznej zapewnia, że Nginx obsługuje pliki takie jak obrazy, CSS i JavaScript bezpośrednio, zmniejszając obciążenie Apache.
lokalizacji
- Zapisz i zamknij plik konfiguracyjny.
- Jeśli używasz Debiana/Ubuntu, włącz witrynę, tworząc dowiązanie symboliczne do:
sites-enabled
- Przetestuj konfigurację Nginx pod kątem błędów składni:
- Uruchom ponownie Nginx, aby zastosować nową konfigurację:
Krok 4: Testowanie konfiguracji odwrotnego proxy
Teraz, gdy Nginx i Apache są skonfigurowane, nadszedł czas, aby przetestować konfigurację odwrotnego proxy, aby upewnić się, że wszystko działa poprawnie.
- Odwiedź swoją domenę lub adres IP: Otwórz przeglądarkę i przejdź do(zastąp rzeczywistą domeną lub adresem IP serwera). Jeśli wszystko jest skonfigurowane poprawnie, powinieneś zobaczyć zawartość obsługiwaną przez Apache, ale kierowaną przez Nginx.
http://example.com
- Sprawdź logi Nginx i Apache: Jeśli wystąpią jakiekolwiek problemy, sprawdź dzienniki Nginx i Apache, aby je rozwiązać:
- Logi Nginx:i
/var/log/nginx/access.log
/var/log/nginx/error.log
- Dzienniki Apache:i
/var/log/apache2/access.log
(lub/var/log/apache2/error.log
dla CentOS/RHEL)/var/log/httpd/
- Logi Nginx:
Krok 5: (Opcjonalnie) Skonfiguruj SSL dla HTTPS
Jeśli chcesz zabezpieczyć swoją witrynę za pomocą HTTPS, Nginx może obsługiwać zakończenie SSL. Oznacza to, że Nginx będzie zarządzał certyfikatami SSL i szyfrowaniem, podczas gdy Apache będzie obsługiwał tylko odszyfrowany ruch HTTP.
Kroki włączania SSL:
- Uzyskanie certyfikatu SSL: Możesz użyć Let’s Encrypt, aby uzyskać bezpłatny certyfikat SSL dla swojej domeny:
- Zmodyfikuj konfigurację Nginx: Zaktualizuj plik konfiguracyjny Nginx, aby nasłuchiwał na porciedla HTTPS:
443
- Przekierowanie HTTP na HTTPS: Dodaj blok przekierowania w konfiguracji, aby zapewnić przekierowanie wszystkich żądań HTTP na HTTPS:
- Uruchom ponownie Nginx: Uruchom ponownie Nginx, aby zastosować zmiany:
Wnioski
Używanie Nginx jako odwrotnego serwera proxy dla Apache to potężna konfiguracja, która łączy mocne strony obu serwerów internetowych. Nginx skutecznie obsługuje statyczną zawartość i przychodzące żądania, podczas gdy Apache zarządza dynamiczną zawartością i przetwarzaniem zaplecza. Takie hybrydowe podejście może znacznie zwiększyć wydajność, bezpieczeństwo i skalowalność infrastruktury serwera WWW.
Postępując zgodnie z krokami opisanymi w tym przewodniku, możesz skonfigurować Nginx jako odwrotne proxy przed Apache i czerpać korzyści z tego, co najlepsze z obu światów. Dodatkowo, implementacja SSL z Nginx zapewnia bezpieczeństwo twojej strony internetowej, zapewniając spokój dla ciebie i twoich użytkowników.