Serwer HTTP Apache
Opracowany przez | Fundacja oprogramowania Apache |
---|---|
Pierwsza wersja | 1995 |
Ostatnia wersja | 2.4.46 (5 sierpnia 2020 r) |
Wersja zaawansowana | 2.5.0-alfa (8 listopada 2017 r) |
Kaucja | svn.apache.org/repos/asf/httpd/httpd |
Napisane w | VS |
System operacyjny | Wieloplatformowy |
Języki | język angielski |
Rodzaj | serwer internetowy |
Licencja | Licencja Apache w wersji 2.0 |
Stronie internetowej | httpd.apache.org |
Darmowe oprogramowanie Apache HTTP Server ( Apache ) jest serwer HTTP tworzone i utrzymywane w Apache Foundation . Do kwietnia 2019 roku był to najpopularniejszy serwer HTTP w sieci WWW . Jest rozpowszechniany na warunkach licencji Apache .
Pojawił się Apache Kwiecień 1995. Na początku był to zbiór poprawek i dodatków do serwera NCSA HTTPd 1.2, który znajdował się w domenie publicznej i był wówczas najpopularniejszym serwerem HTTP. Z tego powodu wiele osób twierdzi, że nazwa Apache pochodzi od niejednakowego serwera lub „ niejednorodnego serwera ”. Następnie Apache został całkowicie przepisany, więc w wersji 2 nie ma śladu NCSA HTTPd.
Początkowo Apache był jedynym poważnym i darmowa alternatywa dla serwera HTTP z Netscape ( iPlanet , teraz Sun ONE ). OdKwiecień 1996Według trwających badań Netcraft , Apache stał się najpopularniejszym serwerem HTTP w Internecie .
Udział w rynku Apache:
Apache w wersji 2 ma kilka głównych ulepszeń w stosunku do wersji 1, w tym obsługę wielu platform ( między innymi Windows , Linux i UNIX ), obsługę lekkich procesów UNIX , nowy interfejs API i obsługę protokołu IPv6 .
Fundacja Apache ( Apache Software Foundation lub ASF ) powstała w 1999 roku z grupy Apache ( Apache Group ), która stworzyła serwer w 1995 roku . Od tego czasu wraz z serwerem HTTP powstało wiele innych programów przydatnych w sieci WWW .
Apache działa głównie na systemach operacyjnych UNIX ( Linux , Mac OS X , Solaris , BSD i UNIX ) i Windows . Wersja dla Windows jest uważana za stabilną dopiero od wersji Apache 1.2. Apache jest używany przez wiele produktów, w tym WebSphere firmy IBM , a także Oracle Corporation .
Apache jest zaprojektowany do obsługi wielu modułów dających mu dodatkową funkcjonalność: interpretacja Perl , PHP , Python i Ruby , serwer proxy , Common Gateway Interface , Server Side Includes , przepisywanie adresu URL , negocjacja treści, dodatkowe protokoły komunikacyjne itp. Należy jednak zauważyć, że istnienie wielu modułów Apache komplikuje konfigurację serwera WWW. Rzeczywiście, najlepsze praktyki zalecają ładowanie tylko przydatnych modułów: wiele luk w zabezpieczeniach wpływających tylko na moduły Apache jest regularnie odkrywanych.
Możliwości konfiguracyjne Apache to cecha flagowa. Zasada opiera się na hierarchii plików konfiguracyjnych, którymi można zarządzać niezależnie. Ta funkcja jest szczególnie przydatna dla hostów, którzy mogą obsługiwać witryny kilku klientów przy użyciu jednego serwera HTTP . Dla klientów ta funkcjonalność jest widoczna w pliku .htaccess .
Wśród narzędzi pomagających w utrzymaniu Apache, pliki dziennika można analizować za pomocą wielu skryptów i bezpłatnego oprogramowania, takiego jak AWStats , Webalizer czy W3Perl . Konfigurację serwera ułatwia kilka interfejsów graficznych.
Te dwa główne tryby działania znacząco zmieniają wydajność serwera HTTP.
Historycznie rzecz biorąc, Apache działa w trybie prefork , co oznacza, że proces nadrzędny uruchomiony z rozszerzonymi uprawnieniami ( root ) uruchamia procesy potomne, z których każdy obsługuje określoną liczbę żądań klientów. Jednak w Linuksie mnożenie procesów powoduje wzrost zużycia zasobów (pamięci, deskryptorów plików).
W pracownika trybie , Apache uruchamia wątki , które będą obsługiwać przychodzące żądania. Różnica polega na tym, że jest to bardziej wyprzedzający tryb, w którym proces nadrzędny przygotowuje zasoby dla swoich wątków. Moduły opracowane przez strony trzecie lub biblioteki używane przez te moduły nie mogą być zaprojektowane do pracy w środowisku wielowątkowym; w takim przypadku mogą być źródłem nieprawidłowego działania, jeśli są używane w trybie roboczym .
Od wersji 2.4 moduł zdarzeń jest dostępny w produkcji. To pochodzi od pracownika trybie tym wyjątkiem, że nici nie tylko usługę połączenia klienta, ale może wykonywać wiele zadań niezależnych od połączenia. W ten sposób KeepAlivelepiej zarządza się pojęciami w tym sensie, że wątek nie czeka już na zakończenie połączenia, aby obsłużyć inny. Mówiąc dokładniej, wątek obsługuje żądanie, a nie połączenie.
Moduły: prefork.c, worker.c, event.c
Między innymi poprzez mod_proxy możliwe jest wykorzystanie serwera Httpd jako prawdziwego proxy .
Jednym z najbardziej interesujących zastosowań jest równoważenie obciążenia , albo w kontekście wysokiej dostępności, albo w celu uzyskania lepszej wydajności. Umiejętności Reverse Proxying są wystarczająco rozwinięte, aby bezproblemowo wypuścić je do produkcji od wersji 2.1.
Moduły: mod_proxy, mod_proxy_balancer, mod_proxy_http, mod_proxy_ajp, mod_proxy_connect