ubuntuusers.de

nginx root-verzeichnis

Status: Gelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

schneibva

Avatar von schneibva

Anmeldungsdatum:
25. Dezember 2006

Beiträge: 514

Wohnort: Franken

Ich habe einen Server 20.04 mit nginx, der hat folgende Konfiguarationsdatei /etc/nginx/sites-available/test.meinerver.de.conf

server {
    listen 80;
    listen [::]:80;
    server_name test.meinserver.de;

    listen 443 ssl;
    listen [::]:443 ssl;
    server_name test.meinerver.de;

    index    index.html index.htm index.php;

    location / {
             root /var/www/html/test/;
             try_files $uri $uri/ =404;
    }
}

rufe ich nun http://test.meinerver.de auf bekomme ich NICHT die Datei /var/www/html/test/index.htm zu sehen, sondern die Datei /var/www/html/index.htm, das Verzeichnist test wird also ignoriert.

An welcher Schraube muss ich drehen?

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Du hast einen Typo in deinem server_name? Zweimal definieren macht zudem keinen Sinn.

Sollte sonst an sich gehen, aber - kommt auch auf die restliche Konfiguration an.

nginx liefert immer irgendwas aus, definiere einen Default Server der eine Fehlerseite ausgibt, dann weisst du Bescheid und deine Inhalte landen nicht auf fremden/schrägen Domainnamen die irgendwer auf deine IP zeigen lässt.

schneibva

(Themenstarter)
Avatar von schneibva

Anmeldungsdatum:
25. Dezember 2006

Beiträge: 514

Wohnort: Franken

Habe die /etc/nginx/sites-available/test.meinserver.de.conf jetzt mal geändert, funzt auch nicht besser:

server {
    server_name test.meinserver.de;

    listen 80;
    listen [::]:80;

    index index.html index.htm index.php;

    location / {
             alias /var/www/html/test/;
             try_files $uri $uri/ =404;
    }
}

server {
    server_name test.meinserver.de;

    listen 443 ssl;
    listen [::]:443 ssl;

    index index.html index.htm index.php;

    location / {
             alias /var/www/html/test/;
             try_files $uri $uri/ =404;
    }
}

und hier ist die /etc/nginx/sites-available/default.conf, die Kommentare habe ich entfernt.

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html/test/;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

# Virtual Host configuration for example.com
#

server {

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;
        server_name test.meinserver.de; # managed by Certbot

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/test.meinserver.de/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/test.meinserver.de/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = test.meinserver.de) {
        return 301 https://$host$request_uri;
        } # managed by Certbot

        listen 80 ;
        listen [::]:80 ;
        server_name test.meinserver.de;
        return 404; # managed by Certbot
}

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Na ja, da ist warum auch immer der server eben auch nochmal in der default.conf definiert. Das hat da drin eigentlich nichts zu suchen. Am Ende kann nur eine Definition gewinnen und das ist bei dir dann halt die falsche.

schneibva

(Themenstarter)
Avatar von schneibva

Anmeldungsdatum:
25. Dezember 2006

Beiträge: 514

Wohnort: Franken

Die default (s.o.) verweist doch auch auf das Verzeichnis test ???

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Nö...

server {

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;
        server_name test.meinserver.de; # managed by Certbot

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

Der jedenfalls nicht und untendran ist nochmal einer der http → https Umleitung macht.

Entweder man macht alles in eine Datei oder für jeden server_name eine eigene Datei, du hast hier beides gemischt, kein Wunder wenn das unübersichtlich wird.

schneibva

(Themenstarter)
Avatar von schneibva

Anmeldungsdatum:
25. Dezember 2006

Beiträge: 514

Wohnort: Franken

ich habe den default jetzt radikal entrümpelt, trotzdem nimmt nginx den weiter und nicht den test.meinserver.de:

#### default, kein SSL

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        server_name _;

        index index.html index.htm index.nginx-debian.html;
        root /var/www/html/;

        location / {
                try_files $uri $uri/ =404;
        }
}

die SSL-Zertifikate stammen von certbot, sie gelten für die richtige Domain test.meinserver.de:

#### test.meinserver.de

server {
    listen 80;
    listen [::]:80;

    server_name test.meinserver.de;

    index index.html index.htm index.php;
    root /var/www/html/test/;

    location / {
             try_files $uri $uri/ =404;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name test.meinserver.de;

    index index.html index.htm index.php;
    root /var/www/html/test/;

    location / {
             try_files $uri $uri/ =404;
    }

    ssl_certificate     /etc/letsencrypt/live/test.meinserver.de/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/test.meinserver.de/privkey.pem; # managed by Certbot
    include     /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

wie kann ich den default loswerden, löschen der Datei führt zu einer entsprechenden Fehlermeldung von nginx.

Ziel ist, für mehrere Donmains (ggf. Subdomains) verschiedene Unterverzeichnisse anzusprechen. Also auch mehrere Dateien.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Hast du das vielleicht gar nicht nach sites-enabled verlinkt?

schneibva

(Themenstarter)
Avatar von schneibva

Anmeldungsdatum:
25. Dezember 2006

Beiträge: 514

Wohnort: Franken

Grrrrrrrrr ... ich habe zwar verlinkt, aber da war ein Tippfehler im Link, Asche auf mein Haupt. Funzt jetzt.

DANKE !!!

schneibva

(Themenstarter)
Avatar von schneibva

Anmeldungsdatum:
25. Dezember 2006

Beiträge: 514

Wohnort: Franken

SO jetzt läuft alles reibungslos, habe mehrere Domains in den richtigen Subdirs von /var/www laufen und PHP funzt auch. ☺

Antworten |