NGINX - Subdomains mit Wildcard Zertifikat von Lets Encrypt
Hallo,
ich nutze einen NGINX-Reverse-Proxy auf einem Pi-Zero. Dieser hat lediglich folgende Server Direktive:
Soweit funktioniert das Ganze auch. Wenn ich https://sub1.meine-domains.de im Browser eingebe, dann erscheint die gewünschte Seite. Auch das Zertifikat wird ordnungsgemäß angezeigt mit *.meine-domain.de.
Leider wird aber auch jede andere Subdomain akzeptiert und auf gleiche Weise verarbeitet.
adsökfjaösdlfkj.meine-domain.de
beispiel.meine-domain.de
Völlig egal was, es wird immer die angegebene Seite (unter "proxy_pass") angezeigt.
Ich war der Meinung, dass der Server lediglich die angegebene Subdomain "sub1.meine-domain.de" verarbeitet.
Wie kann ich das implementieren, dass er lediglich diese eine Subdomain weiterleitet?
Ich nutze den freien DynDNS-Dienst ddnss.de. Dort kann ich lediglich anwählen, dass Wildcard genutzt werden soll, also alle Subdomains (oder ich habe eine andere Funktion noch nicht entdeckt).
Danke!
ich nutze einen NGINX-Reverse-Proxy auf einem Pi-Zero. Dieser hat lediglich folgende Server Direktive:
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name sub1.meine-domain.de;
ssl_certificate /etc/letsencrypt/live/meine-domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/meine-domain.de/privkey.pem;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass https://192.168.0.50;
proxy_read_timeout 90;
proxy_redirect https://192.168.0.50 https://sub1.meine-domain.de;
}
}
Soweit funktioniert das Ganze auch. Wenn ich https://sub1.meine-domains.de im Browser eingebe, dann erscheint die gewünschte Seite. Auch das Zertifikat wird ordnungsgemäß angezeigt mit *.meine-domain.de.
Leider wird aber auch jede andere Subdomain akzeptiert und auf gleiche Weise verarbeitet.
adsökfjaösdlfkj.meine-domain.de
beispiel.meine-domain.de
Völlig egal was, es wird immer die angegebene Seite (unter "proxy_pass") angezeigt.
Ich war der Meinung, dass der Server lediglich die angegebene Subdomain "sub1.meine-domain.de" verarbeitet.
Wie kann ich das implementieren, dass er lediglich diese eine Subdomain weiterleitet?
Ich nutze den freien DynDNS-Dienst ddnss.de. Dort kann ich lediglich anwählen, dass Wildcard genutzt werden soll, also alle Subdomains (oder ich habe eine andere Funktion noch nicht entdeckt).
Danke!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 580514
Url: https://administrator.de/contentid/580514
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
14 Kommentare
Neuester Kommentar
Zitat von @malawi:
Leider wird aber auch jede andere Subdomain akzeptiert und auf gleiche Weise verarbeitet. (...) Ich war der Meinung, dass der Server lediglich die angegebene Subdomain "sub1.meine-domain.de" verarbeitet.
Leider wird aber auch jede andere Subdomain akzeptiert und auf gleiche Weise verarbeitet. (...) Ich war der Meinung, dass der Server lediglich die angegebene Subdomain "sub1.meine-domain.de" verarbeitet.
Normalerweise, wenn du SNI mit mehreren Serverblocks verwendest, definierst du in einem der Blocks "default_server". Da deine Konfiguration nur einen einzigen (https-)Serverblock enthält, wird diese Konfiguration vermutlich implizit als default_server verwendet.
Was du machen könntest:
- Leg einen zusätzlichen Serverblock an
- Definiere diesen als default_server
- Fange alle Anfragen, welche nicht an sub1.meine-domain.de gehen, mit deinem default_server auf
In meiner eigenen Konfiguration sieht das bspw. so aus:
server {
listen 443 ssl default_server;
server_name example.com;
include /etc/nginx/tls-setting-recycling.conf;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
Was dabei etwas unschön ist: Da du nicht weißt, ob der Client auf eine Subdomain oder auf meine-domain.de zugreift, ist es schwierig ein passendes Zertifikat zu verwenden (Kann Let's Encrypt mittlerweile Wildcard-Zertifikate? Ich benutze immer nur explizite Hostnamen). Anderseits passiert das gleiche, wenn jemand auf sub2.meine-domain.de zugreift, du dafür aber kein gültiges Zertifikat verwendest -- im Prinzip bleibt sich's also gleich.
Bevor Fragen kommen: In meiner tls-setting-recycling.conf steht unter anderem:
(...)
ssl_certificate /cryptdata/certificates/$server_name.certchain.pem;
ssl_certificate_key /cryptdata/certificates/$server_name.key.pem;
(...)
Moin,
das Verhalten ist wohl ein Feature und kein Bug.
Schaut man sich bei den Kollegen von Stackoverflow & Co um, taucht die Frage regelmäßig auf:
https://stackoverflow.com/questions/9824328/why-is-nginx-responding-to-a ...
https://stackoverflow.com/questions/46211643/allow-access-from-one-domai ...
https://www.reddit.com/r/nginx/comments/3m1qbd/allow_all_domain_names_bu ...
https://shwetakale.wordpress.com/2015/08/22/nginx-allow-request-only-fro ...
Gruß,
Dani
das Verhalten ist wohl ein Feature und kein Bug.
Schaut man sich bei den Kollegen von Stackoverflow & Co um, taucht die Frage regelmäßig auf:
https://stackoverflow.com/questions/9824328/why-is-nginx-responding-to-a ...
https://stackoverflow.com/questions/46211643/allow-access-from-one-domai ...
https://www.reddit.com/r/nginx/comments/3m1qbd/allow_all_domain_names_bu ...
https://shwetakale.wordpress.com/2015/08/22/nginx-allow-request-only-fro ...
Gruß,
Dani
Zitat von @NordicMike:
Hae? Verstehe ich nicht... Mit dem *.meine-domain.de müsste der jetzt erst recht auf alles hören.
Hae? Verstehe ich nicht... Mit dem *.meine-domain.de müsste der jetzt erst recht auf alles hören.
In der Konfiguration von @malawi gibt es jetzt zwei Server-Blöcke:
- einen spezifisch für sub1.meine-domain.de
- einen Catch-all für alles andere