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.net
der auf verweist /var/www/web1
. Was ich nicht weiß, ist, wie ich NGINX anweise, auf zu verweisen, /var/www/web1
wenn 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.net
diese 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.net
diese 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 undweb1.example.ddns.net
der auf verweist/var/www/web1
.
Als Hinweis: Wenn Sie dies noch nicht getan haben, müssen Sie z. B. web1.example.ddns.net
mit 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/web1
wenn es von aufgerufen wirdweb1.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-available
Verzeichnis (z. B./etc/nginx/sites-available/
) platzieren, wie zBexample.ddns.net
undweb1.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 )
root
abgelegt .location
/
Der zweite Serverblock oben verwendet
/var/www/web1
alsroot
für/
(anstattweb1.example.ddns.net
), da dies das ist, was Sie ursprünglich in Ihrer Frage angegeben haben. Um das klarzustellen,root
muss in jedem Fall mit der Verzeichnisstruktur übereinstimmen, die Sie in Ihrem physischen Dateisystem haben. Das heißt, es muss nicht Ihr spiegelnserver_name
, es sei denn, Sie haben tatsächlich Verzeichnisse (oder ähnliches) namens z. B.example.ddns.net
und erstelltweb1.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 istexample.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.