Wie kann der Zugriff von einer einzelnen IP pro HTTP-Host in Nginx beschränkt werden?

Wie kann der Zugriff von einer einzelnen IP pro HTTP-Host in Nginx beschränkt werden?

Ich habe einen Server mit mehreren Websites, jede mit ihrem eigenen Host.

Gibt es in Nginx eine Möglichkeit, den Zugriff auf 0.0.0.0/0eine bestimmte IP-Adresse zu blockieren bzw. zuzulassen, beispielsweise 1.2.3.4/32für eine bestimmte Website (bestimmter Host/Domänenname)?

Zum Beispiel:

  • Wenn eine HTTP-Anforderung mit dem Host-Header eingeht, www.something-public.comwird alles zugelassen.
  • Wenn eine HTTP-Anforderung mit dem Host-Header eingeht, www.something-private.comlehnen Sie alles ab und lassen Sie eine bestimmte IP-Adresse zu.

Ein weiteres Problem, das ich habe, ist, dass den Websitebesitzern nicht vertraut wird und ich sie durch diese Regel einschränken möchte, indem ich ihnen nicht erlaube, sie über Konfigurationsdateien in den Verzeichnissen der Website zu ändern (z. B. .htaccessDateien, die die Einstellungen des übergeordneten Verzeichnisses überschreiben).

Antwort1

Das Modulngx_http_access_moduleverfügt über Zulassungs- und Ablehnungsbefehle, die Sie in Ihre Serverblöcke einfügen können.

server {
  server_name www.something-public.com;
  allow all; // I think this is the default and the statement is not needed
}

server {
  server_name www.something-private.com;
  allow 192.168.1.1/32;
  deny  all;
}

verwandte Informationen