Apache

Kasia Bielawska
>
Kasia Bielawska

Co to jest Apache?

Apache HTTP Server, często nazywany po prostu Apache, to otwartoźródłowy serwer WWW. Jego głównym zadaniem jest odbieranie żądań wysyłanych przez przeglądarki i inne aplikacje oraz zwracanie odpowiednich zasobów, np. dokumentów HTML, obrazów, plików CSS albo danych generowanych przez aplikację.

Apache może obsługiwać prostą stronę statyczną, ale równie dobrze może być częścią środowiska, w którym działa WordPress, sklep internetowy lub rozbudowana aplikacja. Jest rozwijany jako projekt open source przez Apache Software Foundation i działa między innymi na systemach Linux, Windows oraz innych systemach uniksowych.

Duża popularność Apache wynika między innymi z jego elastycznej konfiguracji, modułowej budowy oraz możliwości zarządzania częścią ustawień witryny przy pomocy pliku .htaccess.

Jak działa Apache?

Apache pracuje w modelu klient–serwer. Klientem może być na przykład przeglądarka internetowa, która wysyła do serwera żądanie pobrania określonego adresu URL.

W uproszczeniu proces wygląda tak:

  • użytkownik wpisuje adres strony lub klika link,
  • przeglądarka nawiązuje połączenie z serwerem,
  • do Apache trafia żądanie HTTP lub HTTPS,
  • Apache analizuje adres, konfigurację serwera i reguły dotyczące witryny,
  • serwer zwraca gotowy plik albo przekazuje żądanie do aplikacji,
  • wygenerowana odpowiedź trafia z powrotem do przeglądarki użytkownika.

Jeśli użytkownik otwiera prosty plik HTML, Apache może przesłać go bezpośrednio. W przypadku strony dynamicznej proces jest bardziej rozbudowany. Żądanie może zostać przekazane np. do aplikacji PHP, która pobierze dane z bazy, przygotuje kod HTML i zwróci go do serwera HTTP.

Apache nie jest więc tym samym co aplikacja, WordPress ani PHP. Jest jednym z elementów infrastruktury, która pozwala udostępnić aplikację użytkownikom internetu.

Jakie funkcje oferuje Apache?

Jedną z ważniejszych cech Apache jest modułowa budowa. Administrator nie musi korzystać ze wszystkich dostępnych funkcji. Może włączać moduły odpowiedzialne za konkretne zadania i dopasowywać konfigurację do danego środowiska.

Apache może między innymi:

  • obsługiwać wiele stron internetowych na jednym serwerze za pomocą Virtual Hosts,
  • przekierowywać i przepisywać adresy URL,
  • obsługiwać szyfrowane połączenia HTTPS,
  • działać jako reverse proxy,
  • kontrolować dostęp do katalogów i zasobów,
  • generować logi żądań i błędów,
  • kompresować przesyłane treści,
  • współpracować z mechanizmami cache,
  • obsługiwać między innymi HTTP/2 zależnie od konfiguracji i użytych modułów.

Czym są moduły Apache?

Moduły rozszerzają możliwości serwera. Przykładowo mod_rewrite służy do przepisywania adresów URL, mod_ssl zapewnia funkcje związane z TLS, a moduły z grupy mod_proxy pozwalają wykorzystywać Apache jako serwer pośredniczący.

Dzięki temu nie każda instalacja Apache musi działać identycznie. Administrator może przygotować konfigurację odpowiadającą potrzebom konkretnej strony lub aplikacji.

Do czego służą Virtual Hosts?

Virtual Hosts pozwalają obsługiwać wiele witryn przy użyciu jednej instalacji Apache. Serwer rozpoznaje, jakiej domeny dotyczy żądanie, i na tej podstawie wykorzystuje odpowiednią konfigurację oraz katalog z plikami.

Mechanizm ten ma duże znaczenie na serwerach, na których działa więcej niż jeden serwis. Jest też jednym z powodów, dla których Apache dobrze nadaje się do środowisk udostępniających hosting wielu witrynom.

Apache i .htaccess – jaki jest między nimi związek?

Jedną z najbardziej charakterystycznych funkcji środowiska Apache jest możliwość używania plików .htaccess. Pozwalają one zmieniać wybrane ustawienia dla konkretnego katalogu bez edytowania głównej konfiguracji serwera.

Za pomocą `.htaccess` można w zależności od konfiguracji serwera między innymi:

  • tworzyć przekierowania,
  • zmieniać sposób obsługi adresów URL,
  • wymuszać przejście z HTTP na HTTPS,
  • ustawiać własne strony błędów,
  • ograniczać dostęp do wybranych zasobów,
  • ustawiać część nagłówków, zasad cache lub kompresji.

To, jakie dyrektywy mogą zostać użyte w `.htaccess`, zależy od konfiguracji Apache, w szczególności ustawień AllowOverride. Nie każdy administrator pozwala więc na zmianę wszystkich parametrów z poziomu tego pliku.

Do czego służy mod_rewrite?

mod_rewrite jest jednym z najbardziej znanych modułów Apache. Pozwala tworzyć reguły zmieniające sposób obsługi adresów URL. Może być używany np. do przekierowań, tworzenia przyjaznych adresów lub wewnętrznego kierowania żądań do odpowiedniej części aplikacji.

Reguły mod_rewrite mogą znajdować się w głównej konfiguracji serwera albo – jeżeli administrator na to zezwala – w `.htaccess`.

Warto uważać przy ręcznej edycji .htaccess. Błąd składni lub niewłaściwa dyrektywa może spowodować problemy z działaniem strony, w tym błąd 500.

Czy Apache jest darmowy?

Tak. Apache HTTP Server jest oprogramowaniem open source udostępnianym na licencji Apache License 2.0. Sam program można więc pobierać, wykorzystywać i modyfikować zgodnie z warunkami tej licencji.

Nie oznacza to jednak, że uruchomienie strony nie wiąże się z kosztami. Potrzebna jest jeszcze infrastruktura, np. serwer lub usługa hostingowa, domena, a zależnie od projektu także administracja, kopie zapasowe i inne elementy środowiska.

Apache pozostaje rozwijanym serwerem HTTP i jest nadal używany w różnych typach infrastruktury. Przy wyborze technologii warto jednak brać pod uwagę cały stos aplikacyjny oraz sposób, w jaki strona będzie działała, zamiast kierować się wyłącznie popularnością jednego serwera.

FAQ – Apache i serwer WWW

Nie. Apache jest serwerem HTTP, natomiast PHP jest językiem programowania działającym po stronie serwera. Apache może współpracować z PHP, np. poprzez PHP-FPM.

Nie. WordPress może działać w różnych środowiskach serwerowych. Apache jest jednym z popularnych rozwiązań i pozwala między innymi korzystać z reguł .htaccess, ale nie jest jedynym serwerem, na którym można uruchomić WordPress.

Tak. Apache może odczytywać ustawienia zapisane w .htaccess, jeśli administrator zezwolił na ich użycie w konfiguracji serwera. Zakres dostępnych dyrektyw zależy między innymi od ustawienia AllowOverride.

Nie ma jednej odpowiedzi dla wszystkich projektów. Apache i Nginx różnią się architekturą i sposobem konfiguracji. Wydajność zależy także od aplikacji, cache, ruchu, zasobów serwera oraz ustawień całego środowiska.

Apache jest aktywnie rozwijanym serwerem, ale jego bezpieczeństwo zależy również od aktualizacji i konfiguracji. Należy instalować poprawki, ograniczać niepotrzebne moduły i uprawnienia, stosować HTTPS oraz analizować logi serwera.