SSL auf nginx mit vhosts
Hallo,
ich bin vor einer Ewigkeit mal auf nginx umgestiegen. Der Server war bisher nur Spielplatz und Mail-Server. Seit Neuestem brauch ich SSL auf 2 von mehreren nginx-vhosts, weil "Spielplatz" wenigstens seine Miete abarbeiten soll.
Was ich nicht blick, ist die Art, wie die configs der vhosts geladen und verarbeitet werden.
Der eine oder andere wird nach diesem Post lachend oder weinend in der Ecke liegen. Man möge mir verzeihen.
Mein Verständnis war:
Man füllt sein "Tuple" in der nginx-config mit den default-values, schiebt dann die vhost-configs rein und diese überschreiben bei Bedarf die defaults in Abhängigkeit von server_name. Wie PHP oder so:
Irgendwie nicht so, wie ich mir das dachte.
Mein Problem:
ISPConfig kopiert für jeden laufenden vhost nach sites-enabled die entsprechende config.
In der /etc/nginx/nginx.conf steht gekürzt:
So eine vhost.conf sieht so aus:
Geb ich die IP des Servers ein, hat diese den Webspace der zuletzt geladenen config statt keinen.
Ich hab das hier irgendwann mal in die /etc/nginx/nginx.conf reingeschrieben:
Damit gabs zumindest keinen Zugriff mehr auf die zuletzt geladene vhost.conf.
Das ging solang gut, wie ich kein SSL laufen hatte. Also hab ich bei der ersten SSL-Domain nur für die IP einen Webspace mit SSL angelegt:
Fand der nginx aber auch doof: jede domain lies jetzt ssl zu und es wurde das zertifikat für den _-webspace ausgegeben.
Also wieder alles weg:
...
Jetzt brauch ich für 2 Domains SSL und dann passiert das hier:
Mal SSL außen vor: Irgendwie scheint das ja aber generell eher unlustig zu sein, wenn ich die vhosts auf einer einzigen IP liegen habe? Wenn ich im vhostE root auskommentiere lande ich auch im webspace von vhostD.
Also die beiden Zeilen wieder einkommentiert mit dem Ergebnis, dass jetzt auf jedem vhost ein "Die Website kann nicht angezeigt werden, da die Authentizität der erhaltenen Daten nicht verifiziert werden konnte." kommt — plus einem Knopf, um jene "bösartige Seiten" zu melden.
Meine Fragen:
Schreckgespenst dankt:
ich bin vor einer Ewigkeit mal auf nginx umgestiegen. Der Server war bisher nur Spielplatz und Mail-Server. Seit Neuestem brauch ich SSL auf 2 von mehreren nginx-vhosts, weil "Spielplatz" wenigstens seine Miete abarbeiten soll.
Was ich nicht blick, ist die Art, wie die configs der vhosts geladen und verarbeitet werden.
Der eine oder andere wird nach diesem Post lachend oder weinend in der Ecke liegen. Man möge mir verzeihen.
Mein Verständnis war:
Man füllt sein "Tuple" in der nginx-config mit den default-values, schiebt dann die vhost-configs rein und diese überschreiben bei Bedarf die defaults in Abhängigkeit von server_name. Wie PHP oder so:
[server => [a => b]] += [server => [a => c, x => y]]
—: [server => [a => b, x => y]]
Irgendwie nicht so, wie ich mir das dachte.
Mein Problem:
ISPConfig kopiert für jeden laufenden vhost nach sites-enabled die entsprechende config.
In der /etc/nginx/nginx.conf steht gekürzt:
http {
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
...
}
server {
listen *:80;
#wenn ssl aktiv, dann noch:
#listen *:443;
#ssl cert ...
#ssl key ...
server_name example.com;
root ...
...
}
Geb ich die IP des Servers ein, hat diese den Webspace der zuletzt geladenen config statt keinen.
Ich hab das hier irgendwann mal in die /etc/nginx/nginx.conf reingeschrieben:
http {
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen *:80 default;
listen *:443 ssl default;
server_name _ xxx.xxx.xxx.xxx;
location / {
deny all;
}
return 444;
}
}
Damit gabs zumindest keinen Zugriff mehr auf die zuletzt geladene vhost.conf.
Das ging solang gut, wie ich kein SSL laufen hatte. Also hab ich bei der ersten SSL-Domain nur für die IP einen Webspace mit SSL angelegt:
http {
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen *:80 default;
listen *:443 ssl default;
server_name _ xxx.xxx.xxx.xxx;
# cert und key
location / {
deny all;
}
return 444;
}
}
Also wieder alles weg:
http {
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
#listen *:80 default;
#listen *:443 ssl default;
server_name _ xxx.xxx.xxx.xxx;
location / {
deny all;
}
return 444;
}
}
...
Jetzt brauch ich für 2 Domains SSL und dann passiert das hier:
vhostA hat kein SSL
vhostB hat SSL
vhostC hat kein SSL
vhostD hat SSL
vhostE hat kein SSL
https://xxx.xxx.xxx.xxx -> nimmt Zertifikat von D
https://vhostA -> nimmt Zertifikat von B
https://vhostB -> nimmt Zertifikat von B
https://vhostC -> nimmt Zertifikat von B
https://vhostD -> nimmt Zertifikat von D
https://vhostE -> nimmt Zertifikat von D
Mal SSL außen vor: Irgendwie scheint das ja aber generell eher unlustig zu sein, wenn ich die vhosts auf einer einzigen IP liegen habe? Wenn ich im vhostE root auskommentiere lande ich auch im webspace von vhostD.
Also die beiden Zeilen wieder einkommentiert mit dem Ergebnis, dass jetzt auf jedem vhost ein "Die Website kann nicht angezeigt werden, da die Authentizität der erhaltenen Daten nicht verifiziert werden konnte." kommt — plus einem Knopf, um jene "bösartige Seiten" zu melden.
Meine Fragen:
- War ich wenigstens annähernd schon mal am Ziel?
- Wäre jemand so freundlich mir zu erkären wie ichs anstellen müsste, damit ich für 2 von vielen Vhosts SSL habe?
- Gleichzeitig einen Aufruf der IP in der Adressleite abbrechen?
- Brauch ich, um das so umzusetzen, wie ich das will, für jeden Vhost eine eigene IP?
Schreckgespenst dankt:
<ver mode="beug" quant="knapp" />
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 266204
Url: https://administrator.de/forum/ssl-auf-nginx-mit-vhosts-266204.html
Ausgedruckt am: 22.04.2025 um 20:04 Uhr
1 Kommentar