close

Apache HTTP-server

Gå til navigation Gå til søg
Apache HTTP-server
Apache HTTP Server-programlogo
Apache logo
Skærmbillede af Apache HTTP Server-programmet
Type webserver og serversoftware
Forfatter Robert McCool [d]
Udvikler Apache Software Foundation [1]
Skrevet i C [3] [4] [5] […]
Operativ system Microsoft Windows og Unix-lignende operativsystem
Interface sprog engelsk
Første udgave 1995
nyeste version
Licens Apache-licens 2.0 [6]
Internet side httpd.apache.org _ 
 Mediefiler på Wikimedia Commons

Apache HTTP-server (er en forvrænget forkortelse for engelsk.  en patchy server ; blandt russiske brugere er oversættelsen af ​​Apache generelt accepteret ) er en gratis webserver .

Apache er en cross-platform software , der understøtter Linux , BSD , macOS , Microsoft Windows , Novell NetWare , BeOS -operativsystemer .

De vigtigste fordele ved Apache er pålidelighed og konfigurationsfleksibilitet. Det giver dig mulighed for at tilslutte eksterne moduler til at levere data, bruge en DBMS til at godkende brugere, ændre fejlmeddelelser osv. Understøtter IPv4 .

Historie

Serveren blev skrevet i begyndelsen af ​​1995 , og dens navn menes at være afledt af  det jokulære navn "en usammenhængende [server]"  ,  da den rettede fejl i den dengang så populære NCSA HTTPd 1.3 World Wide Web- server. Senere, fra version 2.x, blev serveren omskrevet og indeholder nu ikke NCSA -koden . I øjeblikket udføres udviklingen i 2.4-grenen, og der laves kun sikkerhedsrettelser i version 1.3, 2.0 og 2.2. I øjeblikket er den seneste version af 2.4-grenen 2.4.46 (5. august 2020), for den første version er den 1.3.42.

Apache-webserveren er udviklet og vedligeholdt af et åbent fællesskab af udviklere i regi af Apache Software Foundation og er inkluderet i mange softwareprodukter , herunder Oracle-databasen og IBM WebSphere .

Fra april 1996 til i dag har det været den mest populære HTTP -server på internettet . Netcraft -statistikker viser følgende Apache-brugsdata:

  • i august 2007 kørte den på 51 % af alle webservere [7]
  • i maj 2009  - med 46 % [8]
  • i januar 2011  - med 59 %, det vil sige mere end 160 millioner websteder [9]
  • i januar 2016  - med 33,56 %, det vil sige mere end 304 millioner websteder [10] .

Apache har en markedsandel i Rusland på op til 17,45%. Det er den mest populære webserver efter NGINX med en markedsandel på 64,89% [11] .

Arkitektur

Core

Apache-kernen inkluderer kernefunktionalitet såsom konfigurationsfilhåndtering, HTTP-protokollen og et modulindlæsningssystem. Kernen (i modsætning til moduler) er fuldstændig udviklet af Apache Software Foundation , uden involvering fra eksterne programmører.

Teoretisk set kan apache-kernen fungere i sin rene form, uden brug af moduler. Funktionaliteten af ​​en sådan løsning er dog yderst begrænset.

Apache-kernen er udelukkende skrevet i programmeringssproget C.

Konfigurationssystem

Apache-konfigurationssystemet er baseret på tekstbaserede konfigurationsfiler . Den har tre betingede konfigurationsniveauer:

  • Serverkonfiguration ( httpd.conf ). Konfigurationsdirektiverne er grupperet i tre hovedafsnit:
    • direktiver, der kontrollerer Apache-processen som helhed (det globale miljø);
    • direktiver, der definerer parametrene for "hoved"-serveren eller "standard"-serveren, der reagerer på anmodninger, der ikke behandles af virtuelle værter (definerer også standardindstillinger for alle andre virtuelle værter);
    • indstillinger for virtuelle værter, der tillader webanmodninger at blive håndteret af en enkelt Apache-server, men omdirigeret til separate IP -adresser eller værtsnavne.
  • Virtuel værtskonfiguration (httpd.conf siden version 2.2, extra/httpd-vhosts.conf).
  • Indstilling på biblioteksniveau ( .htaccess ).

Det har sit eget konfigurationsfilsprog baseret på blokke af direktiver. Næsten alle kerneparametre kan ændres gennem konfigurationsfiler, op til MPM-kontrol. De fleste af modulerne har deres egne parametre.

Nogle moduler bruger operativsystemets konfigurationsfiler (f.eks . /etc/passwd og /etc/hosts ) i deres arbejde.

Derudover kan parametre indstilles via kommandolinjekontakter .

Multiprocessor-modeller (MPM)

Der er mange symmetriske multiprocessing -modeller til Apache-webserveren . Her er de vigtigste:

Navn Udvikler Understøttet OS Beskrivelse Formål Status
arbejder Apache Software Foundation Linux , FreeBSD Hybrid multiprocessor-flertrådsmodel. Samtidig med at stabiliteten af ​​multiprocessorløsninger bevares, giver det dig mulighed for at betjene et stort antal klienter med minimal brug af ressourcer. Middelbelastede webservere. Stabil.
forgaffel Apache Software Foundation Linux , FreeBSD MPM, baseret på præ-oprettelse af separate processer, bruger ikke trådmekanismen. Større sikkerhed og stabilitet på grund af isolering af processer fra hinanden, opretholdelse af kompatibilitet med gamle biblioteker, der ikke understøtter tråde. Stabil.
barn Apache Software Foundation linux Hybrid model, med et fast antal processer. Højt belastede servere, muligheden for at køre underordnede processer ved hjælp af et andet brugernavn for at forbedre sikkerheden. I udvikling, ustabil.
netware Apache Software Foundation Novell NetWare Multi-threaded model optimeret til NetWare-miljøer. Novell NetWare- servere Stabil.
vinde Apache Software Foundation Microsoft Windows En multi-threaded model skabt til Microsoft Windows -operativsystemet . Servere, der kører Windows Server . Stabil.
Apache-ITK Steinar H Gunderson Linux , FreeBSD MPM baseret på prefork-modellen. Tillader hver virtuel vært at køre under en separat uid og gid . Hostede servere, servere, der er vigtige for brugerisolering og ressourceregnskab. Stabil.
gennemlæser Sean Gabriel Heacock Linux , FreeBSD Model baseret på MPM per barn. Tillader hver virtuel vært at køre under en separat uid og gid . Bruger ikke tråde. Sikring af øget sikkerhed, arbejde med biblioteker, der ikke understøtter tråde. Stabil udgivelse dateret 4. oktober 2007 , eksperimentel udgivelse dateret 10. september 2009 .
begivenhed Apache Software Foundation Linux , FreeBSD Modellen bruger tråde og trådsikker polling er baseret på arbejder. er designet til at betjene flere anmodninger samtidigt ved at overlade noget behandling til lyttertrådene, hvilket frigør arbejdstråde til at betjene nye anmodninger. Leverer forbedret ydeevne. fungerer ikke godt på ældre platforme, der mangler god multithreading, men EPol- eller KQueue-kravet gør dette moot. Stabil.

Modulsystem

Apache HTTP Server understøtter modularitet . Der er mere end 500 moduler [12] , der udfører forskellige funktioner. Nogle af dem er udviklet af Apache Software Foundation -teamet , men størstedelen er af individuelle open source- udviklere.

Moduler kan enten inkluderes i serveren på tidspunktet for kompilering eller indlæses dynamisk gennem konfigurationsfildirektiver.

Moduler gør ting som:

Nogle webapplikationer, såsom ISPmanager og VDSmanager kontrolpaneler , er implementeret som et Apache-modul.

Virtuel værtsmekanisme

Apache har en indbygget virtuel værtsmekanisme . Det giver dig mulighed for fuldt ud at betjene mange websteder ( domænenavne ) på én IP-adresse og vise deres eget indhold for hver af dem.

For hver virtuel vært kan du angive dine egne kerne- og modulindstillinger, begrænse adgangen til hele webstedet eller individuelle filer. Nogle MPM'er, såsom Apache-ITK, giver dig mulighed for at køre en httpd - proces for hver virtuel vært med en separat uid og guide .

Der er også moduler, der giver dig mulighed for at tage hensyn til og begrænse serverressourcer ( CPU , RAM , trafik ) for hver virtuel vært.

Funktionalitet

Integration med anden software og programmeringssprog

Der er mange moduler, der tilføjer understøttelse af forskellige programmeringssprog og udviklingssystemer til Apache.

Disse omfatter:

Derudover understøtter Apache CGI- og FastCGI- mekanismer , som giver dig mulighed for at udføre programmer på næsten alle programmeringssprog, inklusive C , C++ , Lua , sh , Java .

Sikkerhed

Apache har forskellige sikkerhedsmekanismer og dataadgangskontrol. De vigtigste er:

  • Begrænsning af adgang til bestemte mapper eller filer.
  • Brugerautorisationsmekanisme til biblioteksadgang baseret på HTTP-godkendelse (mod_auth_basic) og digest - godkendelse (mod_auth_digest).
  • Begræns adgangen til specifikke mapper eller hele serveren baseret på brugerens IP-adresser .
  • Afvisning af adgang til visse typer filer for alle eller nogle brugere, såsom at nægte adgang til konfigurationsfiler og databasefiler.
  • Der er moduler, der implementerer autorisation gennem en DBMS eller PAM .

Nogle MPM-moduler har mulighed for at starte hver Apache-proces ved hjælp af en anden uid og gid med den relevante bruger og brugergruppe.

Der er også en suexec- mekanisme, der bruges til at køre scripts og CGI -applikationer med brugerrettigheder og legitimationsoplysninger.

For at implementere kryptering af data, der overføres mellem klienten og serveren, bruges SSL - mekanismen , implementeret gennem OpenSSL - biblioteket . X.509 -certifikater bruges til at godkende webserveren .

Der er eksterne sikkerhedsværktøjer såsom mod_security .

Internationalisering

Fra og med version 2.0 blev det muligt for serveren at bestemme brugerens lokalitet . Fejl- og hændelsesmeddelelser sendt til browseren er nu på flere sprog og bruger SSI - teknologi.

Det er også muligt ved hjælp af serveren at implementere visning af forskellige sider for brugere med forskellige lokaliteter. Apache understøtter mange kodninger, inklusive Unicode , som giver dig mulighed for at bruge sider, der er oprettet i enhver kodning og på ethvert sprog.

Hændelseshåndtering

Administratoren kan indstille brugerdefinerede sider og behandlere for alle HTTP- fejl og hændelser såsom 404 (Ikke fundet) eller 403 (Forbudt). Herunder er der mulighed for at køre scripts og vise beskeder på forskellige sprog.

Server Side Inkluderer

I version 1.3 og ældre blev Server Side Includes-mekanismen implementeret, som giver dig mulighed for dynamisk at generere HTML -dokumenter på serversiden.

SSI styres af mod_include - modulet inkluderet i basisdistributionen af ​​Apache.


Se også

  • LAMP  er et bundt af Linux, Apache, MySQL, PHP osv.
  • WAMP er en suite af Windows, Apache, MySQL, PHP osv.
  • MAMP er et bundt af Mac OS, Apache, MySQL, PHP osv.

Noter

  1. http://www.apache.org/foundation/
  2. https://downloads.apache.org/httpd/Announcement2.4.html
  3. http://linuxdocs.org/HOWTOs/Apache-Overview-HOWTO-12.html
  4. https://github.com/apache/httpd
  5. Apache Open Source-projektet på Open Hub: Languages-side - 2006.
  6. https://httpd.apache.org/docs/trunk/license.html
  7. Webserverundersøgelse - august 2007  (  utilgængeligt link) . Netcraft (august 2007). Hentet 21. juni 2009. Arkiveret fra originalen 7. februar 2009.
  8. Webserverundersøgelse - maj 2009  (engelsk)  (link ikke tilgængeligt) . Netcraft (maj 2009). Hentet 21. juni 2009. Arkiveret fra originalen 30. maj 2009.
  9. Januar 2011 Web Server Survey  (engelsk)  (link ikke tilgængeligt) . Dato for adgang: 14. januar 2011. Arkiveret fra originalen 16. januar 2011.
  10. Januar 2016 webserverundersøgelse  . Arkiveret fra originalen den 12. juni 2016.
  11. Statistik over det russiske internet runfo.ru . www.runfo.ru Dato for adgang: 16. februar 2017. Arkiveret fra originalen 17. februar 2017.
  12. Apache Module Registry Arkiveret 3. februar 2010 på Wayback Machine 
  13. Apache::ASP Arkiveret 15. november 2011 på Wayback Machine 
  14. Rivet - Webscripting for Tcl'ers . Hentet 6. oktober 2011. Arkiveret fra originalen 27. september 2011.

Litteratur

  • Scott Hawkins. Apache Web Server Administration og e-Commerce Håndbog. - M. : Williams , 2001. - 336 s. — ISBN 0-13-089873-2 .

Links