schreckgespenst
Goto Top

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:
[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/*;
...
}
So eine vhost.conf sieht so aus:
        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;
        }
}
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:
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:
  1. War ich wenigstens annähernd schon mal am Ziel?
  2. Wäre jemand so freundlich mir zu erkären wie ichs anstellen müsste, damit ich für 2 von vielen Vhosts SSL habe?
  3. Gleichzeitig einen Aufruf der IP in der Adressleite abbrechen?
  4. Brauch ich, um das so umzusetzen, wie ich das will, für jeden Vhost eine eigene IP?


Schreckgespenst dankt:
<ver mode="beug" quant="knapp" />  

Content-Key: 266204

Url: https://administrator.de/contentid/266204

Printed on: April 26, 2024 at 05:04 o'clock

Member: Vision2015
Vision2015 Mar 13, 2015 at 19:40:50 (UTC)
Goto Top
nabend...
# Brauch ich, um das so umzusetzen, wie ich das will, für jeden Vhost eine eigene IP?

warum für jeden Vhost eine ip ?
nur weil dein Webserver 100 Vhost´s hat brauchst du doch keine 100 IP Adressen!
lg
v