Qgelm

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
schulung:http_real_server [2021/12/06 22:56] – angelegt Thomasschulung:http_real_server [2022/01/17 11:26] (aktuell) Thomas
Zeile 10: Zeile 10:
   * **Welcher TCP-Port?**    * **Welcher TCP-Port?** 
  
-Traditionell verwenden Web-Server immer den Port 80 zum Lauschen auf Verbindungen eines TCP-Client. Das ist aber nicht in Stein gemeißelt. Sofern der Nutzer keine Angaben zum Port macht, nimmt der Browser aber immer stillschweigend den Port 80 an. Übrigens unterscheiden sich HTTP und HTTPS in der Port-Nummer: HTTPS verwendet konventionell Port 443. Auch das kann explizit anders verwendet werden. HTTPS ist normalerweise die gleiche Server-Anwendung. Das HTTP-Protokoll samt aller Request/response Zeilen und Inhalte werden aber durch eine zwischengeschaltete TLS-Software verschlüsselt.+Traditionell verwenden Web-Server immer den Port 80 zum Lauschen auf Verbindungen eines TCP-Client. Das ist aber nicht in Stein gemeißelt. Sofern der Nutzer keine Angaben zum Port macht, nimmt der Browser aber immer stillschweigend den Port 80 an. Übrigens unterscheiden sich HTTP und HTTPS in der Port-Nummer: HTTPS verwendet konventionell Port 443. Auch das kann explizit anders benutzt werden. HTTPS ist normalerweise die gleiche Server-Anwendung bezüglich der HTTP-Logik. Das HTTP-Protokoll samt aller Request/Response Zeilen und Inhalte werden aber durch eine zwischengeschaltete TLS-Software verschlüsselt übertragen. TLS verwendet zum Aufbau einer Krypto-Beziehung ein eigenes Protokoll zwischen Client und Server. TLS packt das HTTP-Protokoll somit in das eigene Protokoll ein.
  
-Nach diesen Hinweisen zur Arbeitsweise eines ausgewachsenen statischen HTTP-Servers:+Nach diesen Vorbemerkungen nun zur Arbeitsweise eines ausgewachsenen statischen HTTP-Servers:
  
-  + Ich verwende hier als Server-Software den //nginx//. Das ist neben //apache// und einigen anderen ein ziemlich weit verbreitetes Programm. Die Konfiguration des //nginx// für unser recht simples Beispiel (statischer, unverschlüsselter Webserver unter der Adresse ''http://schulung.qgelm.de'') sieht so aus: 
 + 
 +<code> 
 +http { 
 +  server { 
 +      listen 80; 
 +      listen  [::]:80; 
 +     
 +      server_name schulung.qgelm.de; 
 +      root       /home/thomas/Schulung/html/; 
 +      index      index.html; 
 + 
 +      # This will deny access to any hidden file (beginning with a .period) 
 +      location ~ /\. { deny  all; } 
 +  }  
 +
 +</code>  
 + 
 +Das meiste sollte nach dem bereits Erlernten recht selbst erklärend sein: Der http-Server, der auf den Namen ''schulung'' hört und auf dem für http gebräuchlichen TCP Port 80 lauscht, liefert angefraget Ressourcen unterhalb des //root// Verzeichnisses aus. Wenn die Ressource nur ''/'' lauten sollte, dann wird nach einer Datei ''index.html'' in dem jeweiligen Verzeichnis geschaut. Und als kleines Sicherheitsfeature werden Dateien, die mit einem "." beginnen vom Server ignoriert, also nicht ausgeliefert. 
 + 
 +In dem //root// Verzeichnis sind übrigens auch die Dateien, die wir bei unserer letzten Aktion verwendet haben.  
 + 
 +Ein Aufruf 
 + 
 +http://schulung.qgelm.de/test.txt 
 + 
 +in einem  beliebigem Browser oder mittels ''curl'' sollte das erwartete Ergebnis liefern. Spannender wird jetzt das Live-Experiment mit der im letzten Abschnitt bereits vorgestellten HTML-Datei, die im //root// Verzeichnis als //index.html// hinterlegt ist: 
 + 
 +http://schulung.qgelm.de 
 + 
 +(''/index.html'' habe ich jetzt schon einfach weggelassen, s.o.) 
 + 
 +>Tipp: Die tatsächliche Kommunikation auf Ebene von TCP/IP kann man sich auch direkt anschauen. Dann allerdings wieder in einem Terminal auf dem Server: 
 +
 +> ''tcpdump -i any port 80'' 
 +> oder ''tcpdump -i any -A port 80'', das zeigt dann auch alle Inhalte, alternativ ''ngrep'' 
 + 
 + 
 +Genug mit statischen Webseiten, was bedeutet in dem Zusammenhang [[http_dynamisch|dynamisch]]?