Webserver unter IP Adresse nicht abrufbar machen?
Servus allerseits!
mal wieder habe ich ein Problem, welches ich irgendwann mal irgendwie gelöst habe, aber nicht mehr drauf komme, wie..
Es geht um folgendes:
Ich musste Änderungen am Webserver vornehmen. Zuvor verwendete ich nur Apache2, was allerdings aus notwendigen Gründen erweitert werden muss.
Also habe ich NGINX auf der Hauptmaschine installiert. Dieser leitet nach Konfiguration auch perfekt auf den Webserver, ebenfalls NGINX.
Nun aber kommen wir zu dem Knackpunkt:
Zeitgleich verwende ich Apache2. Bedeutet, Die Anfragen werden von NGINX via ProxyPass in die entsprechenden Richtungen weitergeleitet. Auch das funktioniert.
Bedeutet: NGINX auf Port 80 und Apache2 auf Port 8080
ABER!:
Wenn ich jetzt die IP Adresse des Servers im Browser eingebe, wird man auf die Webseite weitergeleitet, die mit der Domain, welche auf den Server zeigt, verbunden ist.
Ich möchte und brauche es allerdings, genau das nicht funktioniert. Also gibt man die IP-Adresse ( http://IPADRESSE ) ein soll entweder nichts passieren, oder diese Anfrage abgelehnt werden.
Google und alle anderen machen das zB. genauso: Da lädt die Seite einfach und bekommt dann die Standardmeldung < Die Webseite ist nicht erreichbar >.
Um es festzuhalten:
http://IPADRESSE soll ins Leere führen, währenddessen http[s]://DOMAIN weiterhin das Ziel ausführt.
Ich hoffe, das war einigermaßen verständlich.
Kann mir hier zufällig jemand weiterhelfen? Die gefundenen Tutorials waren nicht hilfreich.
Vielen Dank im Voraus!
Liebe Grüße und einen fröhlichen 2. Advent wünsche ich allen! :)
3 Antworten
Bei apache get es soweit ich weiß so, dass du den Default Request auf die 404 Seite weiterleitest und dann nur für die URL einen virtual host machst.
Wie es bei nginx geht weiß ich allerdings nicht wirklich
Das gleiche Konzept existiert in nginx und heißt dort Server Blocks.
Nutze Cloudflare und schalte einen Proxy von denen darauf
Was genau, bzw wessen IP meinst du denn gerade?
Ja und nein. Ich möchte zwar, dass die Anfragen gezielt auf die IP Adresse geblockt werden, aber das gilt für jedermann. Ruf doch einfach mal die IP Adresse von google.de ab (142.251.163.94). Ich habe nicht vor bestimmte IP Adressen von Usern zu blocken! Ich möchte lediglich, dass die Welt die IP Adresse meines Systems nicht via http://IP-Adresse erreicht
Wenn ich den Fragesteller richtig verstehe, möchte er nicht die IP Adresse seines Servers geheim halten (was mit Cloudflare möglich ist), sondern nur verhindern, dass seine Webseite ausgeliefert wird, wenn in der HTTP Request kein Hostname gesetzt ist.
Genau das war/ist der Plan. Dazu wurde weiter unten einen Vorschlag gegeben :)
Die Funktion, die du suchst, heißt in nginx Server Blocks (ähnlich wie Virtual Hosts in Apache 2).
Du kannst mit "default_server" festlegen, welcher Server Block verwendet wird, wenn kein Hostname vorhanden ist oder der Hostname unbekannt ist. In diesem Beispiel wird z.B. die Seite in /var/www/html ausgeliefert, aber du könntest stattdessen eine Fehlerseite anzeigen oder einfach die Verbindung schließen (return 444).
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
Für deine Domain(s) erstellst du dann zusätzliche Server Blocks, die deine Webseite ausliefern. Bei "server_name" gibst du deine Domain(s) an:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Für Port 443 machst du das gleiche.
Danke dir!
Die Verbindung zu schließen erscheint mir tatsächlich sinnvoller.
Danke für deine Antwort. Ja das könnte ich, würde aber nicht den Zweck und das Ziel erfüllen, für den es vorgesehen ist.