Jak skonfigurować Nginx Reverse Proxy dla Apache? ⋆ ALexHost SRL

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
10.12.2024

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:
sudo apt update
sudo apt install nginx apache2
Dla CentOS/RHEL:
sudo yum install epel-release
sudo yum install nginx httpd

Po zainstalowaniu zarówno Nginx, jak i Apache, uruchom i włącz obie usługi, aby upewnić się, że działają podczas uruchamiania:

sudo systemctl start nginx
sudo systemctl start apache2 # Dla CentOS, użyj 'httpd' zamiast 'apache2'
sudo systemctl enable nginx
sudo systemctl enable apache2

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
(zamiast domyślnego
80
), aby Nginx mógł nasłuchiwać na porcie
80
.

Skonfiguruj Apache do nasłuchiwania na porcie 8080:
  1. Otwórz plik konfiguracyjny Apache:
    sudo nano /etc/apache2/ports.conf # Dla Debiana/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # Dla CentOS/RHEL
  2. Znajdź linię określającą port, na którym nasłuchuje Apache (zwykle
    Listen 80
    ) i zmień ją na:
    Listen 8080
  3. Zapisz zmiany i zamknij edytor.
  4. Uruchom ponownie Apache, aby zastosować zmiany:
    sudo systemctl restart apache2 # Dla Debian/Ubuntu
    sudo systemctl restart httpd # Dla CentOS/RHEL

Teraz Apache jest skonfigurowany do nasłuchiwania na porcie

8080
, co pozwoli Nginx nasłuchiwać na porcie
80
(domyślny port HTTP) i przekazywać żądania do Apache.

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
i przekazuje żądania do Apache na porcie
8080
.

Utwórz konfigurację wirtualnego hosta Nginx:
  1. Otwórz lub utwórz nowy plik konfiguracyjny wirtualnego hosta w Nginx:
    sudo nano /etc/nginx/sites-available/example.com # Dla Debiana/Ubuntu
    sudo nano /etc/nginx/conf.d/example.com.conf # Dla CentOS/RHEL
  2. Dodaj następującą konfigurację do pliku:
    server {
    listen 80;
    server_name example.com www.example.com; # Zastąp domeną lub serwerem IPlocation
    / {
    proxy_pass http://127.0.0.1:8080; # Przekazuj żądania do Apache
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }# Serwuj statyczną zawartość bezpośrednio przez Nginx dla lepszej wydajności
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    root /var/www/html; # Ścieżka do plików statycznych
    }
    }

W tej konfiguracji:

  • listen 80
    : Nginx nasłuchuje na porcie
    80
    dla żądań przychodzących.
  • server_name
    : domena lub adres IP, który będzie obsługiwany przez Nginx.
  • proxy_pass
    : Przekazuje żądania do Apache, który nasłuchuje na porcie
    8080
    .
  • proxy_set_header
    : Przekazuje różne nagłówki do Apache, w tym oryginalny adres IP klienta i protokół.
  • Blok
    lokalizacji
    dla zawartości statycznej zapewnia, że Nginx obsługuje pliki takie jak obrazy, CSS i JavaScript bezpośrednio, zmniejszając obciążenie Apache.
  1. Zapisz i zamknij plik konfiguracyjny.
  2. Jeśli używasz Debiana/Ubuntu, włącz witrynę, tworząc dowiązanie symboliczne do
    sites-enabled
    :
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  3. Przetestuj konfigurację Nginx pod kątem błędów składni:
    sudo nginx -t
  4. Uruchom ponownie Nginx, aby zastosować nową konfigurację:
    sudo systemctl restart nginx

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.

  1. Odwiedź swoją domenę lub adres IP: Otwórz przeglądarkę i przejdź do
    http://example.com
    (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.
  2. Sprawdź logi Nginx i Apache: Jeśli wystąpią jakiekolwiek problemy, sprawdź dzienniki Nginx i Apache, aby je rozwiązać:
    • Logi Nginx:
      /var/log/nginx/access.log
      i
      /var/log/nginx/error.log
    • Dzienniki Apache:
      /var/log/apache2/access.log
      i
      /var/log/apache2/error.log
      (lub
      /var/log/httpd/
      dla CentOS/RHEL)

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:
  1. Uzyskanie certyfikatu SSL: Możesz użyć Let’s Encrypt, aby uzyskać bezpłatny certyfikat SSL dla swojej domeny:
    sudo apt install certbot python3-certbot-nginx # Dla Debian/Ubuntu
    sudoyum installcertbot python3-certbot-nginx # Dla CentOS/RHELsudocertbot –nginx -d example.com -d www.example.com
  2. Zmodyfikuj konfigurację Nginx: Zaktualizuj plik konfiguracyjny Nginx, aby nasłuchiwał na porcie
    443
    dla HTTPS:
    nginx
    server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    root /var/www/html;
    }
    }
  3. Przekierowanie HTTP na HTTPS: Dodaj blok przekierowania w konfiguracji, aby zapewnić przekierowanie wszystkich żądań HTTP na HTTPS:
    server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$nazwa_serwera$request_uri;
    }
  4. Uruchom ponownie Nginx: Uruchom ponownie Nginx, aby zastosować zmiany:
    sudo systemctl restart nginx

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.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills