README ¶
scmdhttpd
Same/Simple Content for Multiple/Many Domains
Der Webserver ist für das Hosting von vielen Domains konzipiert. Dabei soll
überall der gleiche Inhalt ausgeliefert werden. Diese Inhalte bestehen aus
einer Eingangsseite (index.html
), einem Favoriten-Icon (favicon.ico
),
CSS-Formatierungen (style.css
) einer robots.txt
, die von Suchmaschinen
ausgewertet wird, sowie einer security.txt
nach RFC 9116.
Der Webserver antwortet nur für Servernamen, die in der Datei
/data/vhosts.conf
gefunden werden. So wird verhindert, dass beliebige, dritte
Domains einen DNS-Namen mit der IP-Adresse des Servers propagieren. Es wird
HTTP und HTTPS unterstützt. Zertifikate werden von der CA Let's Encrypt
dynamisch bezogen und aktualisiert.
Neben dem Ausliefern von statischen Inhalten unterstützt der Webserver
HTTP-Redirects. Der Modus wird pro Eintrag in der Datei vhosts.conf
aktiviert,
wenn dort das Ziel als 2. Wert hinter einem Hostnamen angegeben wird.
Optionen
-
--certificate_dir=<path>
Verzeichnis, in dem der Server TLS-Zertifikate dauerhaft speichern kann.
-
--staging
Der Server benutzt die 'staging' Umgebung von Let's Encrypt.
-
--acmeEndpoint=<acme-directory-url>
Statt Let's Encrypt kann hier eine andere ACME-Instanz konfiguriert werden. In diesem Fall ist die Option
--staging
belanglos. -
--datadir=<path>
Die Dateien
vhosts.conf
,index.html
,favicon.ico
,style.css
undrobots.txt
werden im Verzeichnis/data
gesucht, wenn nicht mit--datadir
ein alternativer Pfad angegeben wird.
Dateien in /data
-
vhosts.conf
Liste mit Hostnamen, für die der Webserver Inhalte liefert. Format: ein Name pro Zeile, kein abschließender Punkt. Optional kann als 2. Wert ein Weiterleitungsziel angegeben werden.
Beispiel:
example example.org https://example.net/foo
Mit diesen Einträgen beantwortet der Service Anfragen für
http://www.example
mit einem Redirect nachhttps://www.example
https://www.example
mit einem Redirect nachhttps://example
http://example
mit einem Redirect nachhttps://example
https://example
mit Inhalten (index.html, ...)http://www.example.org
mit einem Redirect nachhttps://www.example.org
https://www.example.org
mit einem Redirect nachhttps://example.net/foo
http://example.org
mit einem Redirect nachhttps://example.org
https://example.org
mit einem Redirect nachhttps://example.net/foo
Wird die Datei geändert, muss der Server neu gestartet werden. Hostnamen (Spalte 1) werden beim Start des Servers in Kleinbuchstaben konvertiert.
-
index.html
HTML-Seite, die beim Aufruf der URL
/
(und/index.html
) ausgegeben wird. -
robots.txt
Text-Datei, die beim Aufruf der URL
/robots.txt
ausgegeben wird. -
favicon.ico
Icon-Datei, die beim Aufruf der URL
/favicon.ico
ausgegeben wird. -
style.css
CSS-Datei, die beim Aufruf der URL
/style.css
ausgegeben wird. -
security.txt
"vulnerability disclosure information", die beim Aufruf der URL
/.well-known/security.txt
ausgegeben wird. Die Datei sollte inhaltlich RFC 9116 entspechen.
Werden die genannten URLs per HTTP aufgerufen, erfolgt ein permanenter Redirect auf die entsprechende HTTPS-URL.
Alle anderen URLs werden mit 404 Not Found beantwortet.
Anfragen für unbekannte Hostnamen
HTTP-Anfragen an den Server mit einem Hostnamen, der nicht in vhosts.conf
konfiguriert ist, werden mit 400 Bad Request
beantwortet; bei HTTPS-Anfragen kommt keine TLS-Verbindung zustande.
Logging
Anfragen werden auf STDOUT geloggt. Das Format entspricht weitgehend dem
combined
Logformat eines NGINX Webservers.
Ausnahmen:
-
an 3. Stelle wird anstatt
$remote_user
der Hostname$host
geloggt. -
an 7. Stelle wird die Anzahl der Antwortbytes (
$body_bytes_sent
) immer mit 42 geloggt. -
bei HTTPS-Anfragen werden nach dem User-Agent TLS-Version sowie TLS-Cipher im Format "tlsversion=... tlscipher=..." ausgegeben.
Documentation ¶
There is no documentation for this package.