Wie konfiguriere ich Subdomains mit NGINX und DDNS

Wie konfiguriere ich Subdomains mit NGINX und DDNS

Ich habe eine DDN-Subdomain auf No-IP registriert: example.ddns.net Ich habe No-IP so konfiguriert, dass es der IP meines Routers zugeordnet wird, der den Port an meinen NGINX-Webserver weiterleitet. Ich möchte einen separaten Webserver haben, den ich hoste und web1.example.ddns.netder auf verweist /var/www/web1. Was ich nicht weiß, ist, wie ich NGINX anweise, auf zu verweisen, /var/www/web1wenn es von aufgerufen wird web1.example.ddns.net. Kann mir jemand eine detaillierte Erklärung geben, wie ich meinen Server konfiguriere?

Unten ist meine Konfiguration für example.ddns.netdiese Konfiguration. Sie befindet sich unter /etc/nginx/sites-available/. Dort gibt es einen Link zu /etc/nginx/sites-enabled.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
       
        root /var/www/example.ddns.net;

        server_name example.ddns.net;

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

}

Unten ist meine Konfiguration für web1.example.ddns.netdiese Konfiguration. Sie befindet sich unter /etc/nginx/sites-available/. Dort gibt es einen Link zu /etc/nginx/sites-enabled.

server {
        listen 80;
        listen [::]:80;
       
        root /var/www/web1.example.ddns.net;

        server_name web1.example.ddns.net;

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

}

Dies sind die einzigen Dateien, die ich geändert habe. Der folgende NGINX-Server wird auf einem Ubuntu-Server gehostet und ich greife per SSH auf den Server zu und greife über einen separaten Computer auf die Webseite zu. Kann mir jemand Anweisungen geben, wie ich dieses Problem beheben kann?

Antwort1


Die folgende Antwort ist ziemlich einfach. Verzeihen Sie mir also bitte, wenn ich etwas wiederhole, was Sie bereits wissen. =)


Ich habe eine DDNS-Subdomäne auf No-IP registriert: example.ddns.net. [...] Ich möchte einen separaten Webserver haben, den ich hoste und web1.example.ddns.netder auf verweist /var/www/web1.

Als Hinweis: Wenn Sie dies noch nicht getan haben, müssen Sie z. B. web1.example.ddns.netmit No-IP erstellen und es auf Ihren Server verweisen. Andernfalls spielt die Serverkonfiguration keine Rolle, da niemand den Server über diese Adresse kontaktieren kann.

Was ich nicht weiß, ist, wie ich NGINX anweise, auf zu verweisen, /var/www/web1wenn es von aufgerufen wird web1.example.ddns.net.

Alles, was Sie wirklich brauchen, sind grundlegende Serverblöcke. Aus den NGINX-Standardbeispielen:

Beispiel: example.ddns.net

server {
        listen       80;
        server_name  example.ddns.net;
        
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/example.ddns.net;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

Beispiel: web1.example.ddns.net

server {
        listen       80;
        server_name  web1.example.ddns.net;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/web1;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

Grundlegende Anweisungen

  • Bei Ubuntu sollten Sie diese Serverblöcke im entsprechenden sites-availableVerzeichnis (z. B. /etc/nginx/sites-available/) platzieren, wie zB example.ddns.netund web1.example.ddns.net.

  • Erstellen Sie die entsprechenden symbolischen Links sites-enabled(zB. /etc/nginx/sites-enabled/), wie zB:

    sudo ln -s /etc/nginx/sites-available/example.ddns.net /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/web1.example.ddns.net /etc/nginx/sites-enabled/
    

    oder mit der von Ihrem Betriebssystem empfohlenen Methode.

  • Führen Sie es nginx -t(z. B. sudo nginx -t) wie in den Kommentaren vorgeschlagen aus, um sicherzustellen, dass bei NGINX keine Syntaxfehler oder andere Probleme aufgetreten sind.

  • Starten Sie NGINX neu, z. B. mit sudo systemctl restart nginx.

Anmerkungen

  • Die oben genannten Blöcke lassen IPv6 fallen (dies sollte zum Testen wahrscheinlich nicht notwendig sein).

  • In keinem dieser Beispiele wird verwendet default_server.

  • Die jeweiligen Einträge werden in einem Block (also im Stammverzeichnis der Website ) rootabgelegt .location/

  • Der zweite Serverblock oben verwendet /var/www/web1als rootfür /(anstatt web1.example.ddns.net), da dies das ist, was Sie ursprünglich in Ihrer Frage angegeben haben. Um das klarzustellen, rootmuss in jedem Fall mit der Verzeichnisstruktur übereinstimmen, die Sie in Ihrem physischen Dateisystem haben. Das heißt, es muss nicht Ihr spiegeln server_name, es sei denn, Sie haben tatsächlich Verzeichnisse (oder ähnliches) namens z. B. example.ddns.netund erstellt web1.example.ddns.net.

  • Der erste Serverblock verwendet noch /var/www/example.ddns.net, stellen Sie also sicher, dass dies der richtige Pfad zum Speicherort Ihrer Dateien ist example.ddns.net.

  • Generell ist es nach Änderungen an Ihrem Server im Allgemeinen sinnvoll, den Browser-Cache zu leeren, damit Ihr Browser Ihnen keine alten Daten zurückgibt.

verwandte Informationen