Detaillierte Erläuterung von Beispielen für die Konstruktion von HTTP-Diensten

零下一度
Freigeben: 2017-06-27 10:06:06
Original
2298 Leute haben es durchsucht
1. Einführung
1. Verschlüsselte Webseite (https): tcp:443  Klartext-Webseite (http) : tcp: 80
survey.netcraft.net – Sie können die aktuelle Website-Serverauslastung auf dieser Website überprüfen
Hypertext Transfer Protocol (HTTP, HyperText Transfer Protocol) ist am häufigsten weit verbreitetes Netzwerkprotokoll. Alle WWW-Dateien müssen diesem Standard entsprechen. Der ursprüngliche Zweck des HTTP-Designs bestand darin, eine Methode zum Veröffentlichen und Empfangen von HTML-Seiten bereitzustellen
2. Apache
Apache HTTP Server (bezeichnet als (Apache) ist ein Open-Source-Webserver der Apache Software Foundation, der aufgrund seiner Multiplattform- und Sicherheitsfunktionen weit verbreitet ist und zu den beliebtesten Webserver-seitigen Softwareprogrammen gehört
Die Funktionen sind wie folgt:
1. Unterstützt das neueste HTTP/1.1-Kommunikationsprotokoll
2. Verfügt über einen einfachen und leistungsstarken dateibasierten Konfigurationsprozess
3. Unterstützt die universelle Gateway-Schnittstelle
4. Unterstützt IP-basierte und domänennamebasierte virtuelle Hosts
5. Unterstützt mehrere Methoden der HTTP-Authentifizierung
6 . Integrieren Sie das Perl-Verarbeitungsmodul
8. Unterstützung der Echtzeitüberwachung des Serverstatus und der benutzerdefinierten Serverprotokolle
9 Anweisungen (SSI)
10. Unterstützung von Secure Socket Layer (SSL)
11. Unterstützung von FastCGI
13 . Unterstützen Sie JavaServlets über Module von Drittanbietern
3 🎜># yum install httpd* --installation httpd service
# httpd -t --Überprüfen Sie die Richtigkeit der Konfigurationsdatei
# rm -rf /etc/httpd/conf.d/ Welcome.conf – Löschen Sie die Begrüßungsschnittstelle; da sie httpd-manual installiert ist, können Sie auf
/ServerIp/manual
zugreifen. 4. Ausführen in zwei Modi: Prefork, Worker
Prefork-Modus:
Prefork ist das Standard-MPM (Standard) auf Unix-Plattformen, verwendet mehrere untergeordnete Prozesse, jeder untergeordnete Prozess hat nur einen Thread . Jeder Prozess kann zu einem bestimmten Zeitpunkt nur eine Verbindung aufrechterhalten, hohe Effizienz, aber relativ großer Speicherverbrauch.
Dieses Multiprocessing-Modul (MPM) implementiert einen nicht-threaded, vorab geforkten Webserver, der ähnlich wie Apache 1.3 funktioniert. Es eignet sich für Systeme, die nicht über Thread-sichere Bibliotheken verfügen und Thread-Kompatibilitätsprobleme vermeiden müssen. Es ist das beste MPM, wenn jede Anforderung unabhängig voneinander sein muss, sodass ein Problem bei einer Anforderung keine Auswirkungen auf andere Anforderungen hat.
Worker-Modus:
Worker verwendet mehrere Unterprozesse, jeder Unterprozess hat mehrere Threads , jeder Thread zu einem bestimmten Zeitpunkt Nur einen Die Verbindung kann aufrechterhalten werden, der Speicherbedarf ist relativ gering und es ist für HTTP-Server mit hohem Datenverkehr geeignet . Der Nachteil besteht darin, dass beim Absturz eines Threads der gesamte Prozess zusammen mit allen seinen Threads „abstirbt“. Um sicherzustellen, dass ein Programm vom System als „jeder Thread ist sicher“ erkannt werden muss, wenn es ausgeführt wird.
Dieses Multi-Processing-Modul (MPM) ermöglicht es dem Webserver, gemischtes Multi-Threading und Multi-Processing zu unterstützen. Da Threads zum Verarbeiten von Anforderungen verwendet werden, können umfangreiche Anforderungen mit weniger Systemressourcenaufwand als bei prozessbasiertem MPM verarbeitet werden. Es nutzt aber auch mehrere Prozesse mit jeweils mehreren Threads, um die Stabilität von prozessbasiertem MPM zu erreichen.
# httpd -l --Laufmodus anzeigen, der Standard ist prefork.c
# mv -v /usr/sbin/httpd{,.prefork} --Backup-Prefork-Modus
# mv -v /usr/sbin/httpd{.worker,} --Worker-Modus verwenden
2. Detaillierte Erläuterung der Konfigurationsdatei
1. Globale Umgebungsparameter
ServerTokens OS --Wenn der Server auf die Host-Header-Informationen (Header) antwortet, werden die Apache-Version und der Betriebssystemname angezeigt angezeigt
ServerRoot "/etc/httpd" – Im Allgemeinen enthält es die Unterverzeichnisse conf/ und logs/. Die relativen Pfade anderer Konfigurationsdateien basieren auf diesem Verzeichnis.
PidFile run/httpd.pid – Der Speicherort der Prozessnummerndatei des ersten httpd-Prozesses (der übergeordnete Prozess aller anderen Prozesse).
Timeout 60 --Wenn nach 60 Sekunden keine Daten empfangen oder gesendet werden, wird die Verbindung unterbrochen
KeepAlive Off --Nicht Wird standardmäßig verwendet. Die Funktion zum Aufrechterhalten der Verbindung, dh der Client kann jeweils nur auf eine Datei antworten, wenn er die Verbindung anfordert. Es wird empfohlen,
MaxKeepAliveRequests zuzulassen 100 --Wenn die Verbindung aufrechterhalten wird, kann der Client eine Anfrage festlegen. Die maximale Grenze der Verbindung, die auf Dateien reagieren kann. Wenn sie die Grenze überschreitet, wird sie getrennt KeepAliveTimeout 15 --Wenn bei Verwendung der Keep-Alive-Funktion das Zeitintervall zwischen zwei benachbarten Verbindungen 15 Sekunden überschreitet, wird die Verbindung getrennt
........ .....
Listen 80 – Die Portnummer, die der Server abhört; Sie können mehrere Abhörports öffnen
Conf.d/*.conf einschließen --Will Alle Konfigurationsdateien, die mit conf im Verzeichnis /etc/httpd/conf.d enden, sind enthalten
Benutzer Apache --der Benutzer des Unterprozesses, der Dienste bereitstellt
Gruppe Apache --Die Benutzergruppe des Unterprozesses, der den Dienst bereitstellt
ServerAdmin root@george.com --Die E-Mail-Adresse des Administrators Adresse
ServerName mail.george.com:80 --Name der Hauptseite (Hostname der Website)
UseCanonicalName Off
DocumentRoot „/var/www/html“ – Legen Sie das Stammverzeichnis des Webdokuments fest. Sie können jedoch symbolische Links und Aliase verwenden, um auf andere Speicherorte zu verweisen relativ zu ServerRoot
2. Pfadsteuerungsparameter
DirectoryIndex index.html index.html.var
– der Standardname der Webseitendatei von die Website, die linke Seite hat Vorrang
AccessFileName .htaccess
--Geben Sie den Namen der geschützten Verzeichniskonfigurationsdatei an
------- --------------------------- --------- --------------------------- --------- ---
– wird verwendet, um eine Gruppenanweisung zu kapseln, sodass sie nur für ein bestimmtes Verzeichnis und seine Unterverzeichnisse wirksam ist. Für ein Verzeichnis im DateisystemOptionen Indizes FollowSymLinks
AllowOverride None
Auftrag erlauben, verweigern
Von allen zulassen
Ab 192.168.133.22 verweigern
Verzeichnispfad --
kann ein vollständiges Verzeichnis A sein Pfad oder eine Platzhalterzeichenfolge mit Unix-Shell-Übereinstimmungssyntax. In einer Platzhalterzeichenfolge entspricht „?“ einem beliebigen einzelnen Zeichen und „*“ einer beliebigen Zeichenfolge. Sie können auch „[]“ verwenden, um den Zeichenbereich festzulegen. Sie können auch reguläre Ausdrücke nach dem „~“-Zeichen verwenden
Optionen --
Der Wert dieses Befehls kann „None“, „All“ oder das sein Folgende Optionen: Beliebige Kombination von: Indizes (mit „-“ davor ist die Funktion zum Auflisten von Verzeichnissen auf der Website deaktiviert, andernfalls ist die Funktion zum Auflisten von Verzeichnissen auf der Website deaktiviert); ExecCGI; MultiViews
AllowOverride – Steuert Anweisungen, die in .htaccess-Dateien platziert werden. Es kann All, None (keine Konfiguration in .htaccess sichtbar) oder eine Kombination der folgenden Anweisungen sein: Options;FileInfo;AuthConfig;Limit
Order,Allow , Ablehnen – Kontrollieren Sie, wer Dienste erhalten kann. Die Parameter von order basieren letztendlich auf denen rechts, und die Reihenfolge kann umgekehrt werden
------------------ ------- ------------------------------------------- ------- ----------------------------------
--Für die angegebene Datei kann sich in einem bestimmten Verzeichnis oder global befinden
Auftrag verweigern, zulassen
Von allen zulassen
- ------------------------------ ------ -------------------------------------------- ------ ----
-- Ermöglicht die Anzeige des Servers über die URL „http:/“ /servername/server-status" Status (oder Informationen); Standort steuert hauptsächlich die URL
SetHandler server-status(server-info )
Auftrag verweigern, zulassen
Von allen zulassen
------------- ----- --------------------------------------------- ----- ------------------------------------
Alias ​​​​/ url-path /filesystem-path – Ordnen Sie die URL dem Dateisystempfad zu (Sie können dies auch über den Softlink ln -s auf dem System erreichen)
3. Nicht-Systembenutzer)
--Theory kann auch in Location,file
gefunden werden Optionen Indizes FollowSymLinks
AllowOverride None
Erlauben, verweigern anordnen
Von allen zulassen
Authentifizierungsname „Authentifizieren Sie sich“  – Fordern Sie den Browser auf, die URL zu öffnen
authtype basic
authuserfile /etc/httpd/userpasswd  – Speicherort der Benutzer- und Passwortdatei
gültigen Benutzer erforderlich
# htpasswd -c /etc/httpd/userpasswd frank – Erstellen Sie einen Benutzer, der Zugriff erlaubt
# htpasswd /etc/httpd/userpasswd george - -Erstellen Sie eine weitere. Denken Sie an den Parameter „-c“, der zum Erstellen der Kennwortdatei dient und nur beim Erstellen des ersten Benutzers verwendet werden kann.
Hinweis: Wenn ein Verzeichnis einen passwortgesteuerten Zugriff verwendet, ist das Verzeichnis nicht sichtbar, wenn sein übergeordnetes Verzeichnis über einen Webbrowser aufgelistet wird, d. h. es wird ausgeblendet. Der Zugriff ist jedoch durch direkte Eingabe der URL möglich (auch wenn Sie über ein Konto und ein Passwort verfügen).
4. Domänennamenbasierter virtueller Host
NameVirtualHost *:80 – Fügen Sie diese Konfiguration hinzu, um Port 80 als virtuellen Host-Port festzulegen
--Der erste virtuelle Host
ServerName www.george.com
DocumentRoot /var/www/html/
.............
< /Verzeichnis>
– Der zweite virtuelle Host
ServerName mail.george .com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias ​​​​/mail /var/www/cgi-bin/openwebmail/openwebmail.pl
< ;Location />
........................
Wenn der SeverName-Parameter dieses Experiments mit der IP-Adresse verbunden ist, können wir auch einen IP-basierten virtuellen Host erstellen
5 🎜>ErrorLog logs/error_log –
Der Speicherort des Fehlerprotokolls
LogLevel warn – Definieren Sie die Fehlerprotokollebene, einschließlich:
Debug, Info, Hinweis , Warnung, Fehler, Krit, Alarm, Notfall.
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{ User-Agent}i"" kombiniert
............
LogFormat „%{User-agent}i“ Agent – ​​diese vier Elemente fehlen aus dem
Zugriffsprotokoll-Provinzformat
CustomLog-Protokolle/Zugriffsprotokoll kombiniert – Kombiniertes Zugriffsprotokollformat verwenden
%h – IP-Adresse oder Hostname des Clients
%l –Dies ist die RFC 1413-Identität, die durch die Identität des Clients bestimmt wird. Das Symbol „-“ in der Ausgabe zeigt an, dass die Informationen hier ungültig sind.
%u – der vom HTTP-Authentifizierungssystem erhaltene Name des Clients, der auf die Webseite zugegriffen hat. Sie ist nur gültig, wenn sie authentifiziert ist. Das „-“-Symbol in der Ausgabe zeigt an, dass die Informationen hier ungültig sind.
%t – Der Zeitpunkt, zu dem der Server die Verarbeitung der Anfrage abgeschlossen hat.
„%r“ – Die Anführungszeichen sind der vom Kunden gesendete Anfrageinhalt, der viele nützliche Informationen enthält.
%>s – Dies ist der Statuscode, der vom Server an den Client zurückgegeben wird.
%b – Das letzte Element ist die Anzahl der an den Client zurückgegebenen Bytes ohne Antwortheader.
"%{Referer}i" – Dieses Element gibt an, von welcher Webseite die Anfrage gesendet wurde.
"%{User-Agent}i" – Bei diesem Element handelt es sich um die vom Browser des Kunden bereitgestellten Browser-Identifikationsinformationen.
6. SSL-Verschlüsselungskonfiguration
# yum install -y mod_ssl --Verschlüsselungsmodul installieren
# vim /etc/httpd/conf.d /ssl.conf
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/pki/tls/certs/localhost.crt – Konfiguration der öffentlichen Schlüsseldatei
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key --Konfigurationsschlüsseldatei
SSLOptions +StdEnvVars
< ;/Files>
ServerName www.george.com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias ​​/mail /var/www/ cgi -bin/openwebmail/openwebmail.pl
SSLOptions +StdEnvVars
Options Indexes
order deny,allow
Von allen zulassen
SetEnvIf User-Agent ".*MSIE.*"
nokeepalive ssl-unclean-shutdown
Downgrade-1.0 Force-Response-1.0
CustomLog logs/ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
6.1. Konfigurieren Sie das Zertifikat selbst
# mkdir /etc/pki/test/
# cd / etc/pki/test
# openssl genrsa -out /etc/pki/test/test.key 1024 --secret key
# openssl req -new -key test.key - out test .csr
Ländername (2-Buchstaben-Code) [XX]:cn
Staats- oder Provinzname (vollständiger Name) []:guangDong
Ortsname (z. B. Stadt) [Standardstadt]:Shenzhen
Name der Organisation (z. B. Firma) [Standardfirma Ltd.]:IT
Name der Organisationseinheit (z. B. Abschnitt) []:Wartung
Allgemeiner Name (z. B. Ihr Name oder der Hostname Ihres Servers) []:www.george.com
E-Mail-Adresse []:root@mail.george.com
Bitte geben Sie die folgenden „zusätzlichen“ Attribute ein
die gesendet werden sollen mit Ihrer Zertifikatsanfrage
Ein Challenge-Passwort []:123456
Ein optionaler Firmenname []:Azt
# openssl req -x509 -days 365 -key test.key -in test.csr -out test.crt --Public key
# ls --Konfigurieren Sie dann den folgenden test.crt && test.key für /etc /httpd/conf.d/ssl.conf kann
test.crt test.csr test.key
6.2 sein. Testen Sie das von Ihnen konfigurierte Zertifikat
Aber das von uns selbst erstellte Zertifikat wird im Browser als nicht vertrauenswürdig erkannt; Der Zertifikatsstatus lautet auch „Da sich das CA-Stammzertifikat nicht im Speicher „Vertrauenswürdige Stammzertifizierungsstellen“ befindet, ist es nicht vertrauenswürdig.“
  

  Wir müssen das Zertifikat (test.crt), das wir selbst im Browser erstellt haben, manuell in die „Vertrauenswürdige Stammzertifizierungsstelle“ und „Vertrauenswürdiger Herausgeber“ importieren. Nimmt man Google Chrome als Spalte, lauten die Schritte wie folgt:

". Das ist in Ordnung.

 

Öffnen Sie zu diesem Zeitpunkt mit einem Browser unsere Website und überprüfen Sie den Status des Zertifikats „Es gibt kein Problem mit diesem Zertifikat“.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die Konstruktion von HTTP-Diensten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage