Wie leitet man den Besucher je nach seinem „Host“ zu einem bestimmten HTTP-Dienst weiter?

Wie leitet man den Besucher je nach seinem „Host“ zu einem bestimmten HTTP-Dienst weiter?

Ich möchte die Benutzer mit Nginx-Konfiguration zu verschiedenen Webdiensten weiterleiten.

Das Szenario ist für die internen Benutzer mit dem Hostnamen von 192.168.1.1bis 192.168.1.255gedacht. Ich möchte ihnen einen Webdienst bereitstellen, für die anderen externen Besucher möchte ich jedoch nicht, dass dies realisiert wird.

Ich weiß, dass ich IP_TABLESdiese Funktion aktivieren könnte, aber ich verwende IP_TABLE-Regeln hauptsächlich für Firewall-Zwecke und möchte sie nicht mit dieser Konfiguration vermischen.

Steht mir darin irgendeine Konfiguration zur Verfügung nginx.conf?

Antwort1

Sie können das GEO-Modul zusammen mit einer Kartendirektive verwenden:

http {
  geo $special_service {
    default 0;
    192.168.1.0/24 1;
  }
  server {
    if ($special_service) {
      return 302 $scheme://$server_name/special-service/;
    }
  }
}

Antwort2

Erstellen Sie einen separaten locationBlock, der Ihre vertraulichen Inhalte abdeckt.

Bedenken Sie, dass Konfigurationsanweisungen nicht übernommen werden. Sie müssen in den neuen Block alles aufnehmen, was sich am vorhandenen Speicherort befindet und für Ihren Inhalt benötigt wird.

location /path/to/sensitive/stuff {
    # any other config that you need goes here..
    # ...
    allow 192.168.1.0/24;
    deny all;
}

verwandte Informationen