ACL-Konfiguration basierend auf Schlüsselwörtern und Blacklist im Nginx-Reverse-Proxy

王林
Freigeben: 2023-06-10 09:52:39
Original
1500 Leute haben es durchsucht

Mit dem rasanten Fortschritt der Netzwerkentwicklung steigt die Anzahl der bereitgestellten Anwendungen und Dienste. In einigen Szenarien müssen Anforderungen an bestimmte Server oder Anwendungen weitergeleitet werden. Nginx ist ein Hochleistungs-Webserver und eine häufig verwendete Reverse-Proxy-Methode, die diese Probleme lösen kann. Basierend auf dem vom Nginx-Reverse-Proxy bereitgestellten ACL-Modul können Administratoren das Anforderungsrouting, die Zugriffskontrolle und andere Netzwerksicherheitsprobleme flexibel steuern und verwalten.

Bei einem Reverse-Proxy wird eine Anfrage vom Client an den Reverse-Proxy-Server gesendet, und der Proxy-Server sendet im Namen des Clients eine Anfrage an den Backend-Server und stellt dem Client das Rückgabeergebnis zur Verfügung. Beispielsweise kann in modernen Webanwendungen mit mehreren Sprachen und Technologie-Stacks der Nginx-Reverse-Proxy verwendet werden, um verschiedene Anforderungen über denselben Domänennamen an verschiedene Back-End-Dienste weiterzuleiten.

In diesem Artikel erfahren Sie, wie Sie schlüsselwort- und blacklistbasierte ACLs konfigurieren, um detailliertere Routing-Richtlinien und Sicherheitskontrollen für den Nginx-Reverse-Proxy zu implementieren.

Schlüsselwort-ACL

Schlüsselwort-ACL ist eine Möglichkeit, die Weiterleitung von Anfragen zu implementieren, indem Schlüsselwörter in der Anfrage-URL abgeglichen werden. Wenn in der aktuellen Anwendung beispielsweise die angeforderte URL „/app1/“ enthält, möchten wir, dass der Nginx-Reverse-Proxy die Anfrage an Backend-Anwendung 1 weiterleitet. Wenn die URL „/app2/“ enthält, wird die Anfrage an Backend-Anwendung 2 weitergeleitet.

Um diese Funktion zu implementieren, müssen Sie eine Schlüsselwort-ACL in der Nginx-Konfigurationsdatei konfigurieren. So konfigurieren Sie es:

http {
    ...
    # 关键词acl
    map $request_uri $app_name {
        ~* "/app1/" app1;
        ~* "/app2/" app2;
        default "";
    }
}
Nach dem Login kopieren

In dieser Konfiguration ist $request_uri eine in Nginx integrierte Variable, die die angeforderte URL darstellt. Der Wert dieser Variablen wird an die Map-Direktive übergeben, die dem vordefinierten regulären Schlüsselwortausdruck entspricht. Wenn der Abgleich erfolgreich ist, wird der Name der Anwendung in der Variablen $app_name gespeichert, andernfalls wird der Standardwert verwendet.

Dann kann die oben definierte Variable $app_name als Ziel des Proxys an die Proxy-URL-Option in der Proxy-Direktive übergeben werden:

server {
    ...
    location / {
        ...
        # 配置关键词代理
        proxy_pass http://$app_name.backend.com;
    }
}
Nach dem Login kopieren

In dieser Konfiguration entspricht das Schlüsselwort ACL der angeforderten Anwendung anhand des angeforderten URL-Namens und Leiten Sie die Anfrage des Clients über die Proxy-Anweisung an die entsprechende Backend-Anwendung weiter.

Blacklist-basierte ACL

Blacklist-ACL ist eine Methode, mit der der Zugriff von bestimmten IPs oder angeforderten URLs blockiert wird. Dieser Ansatz ist in manchen Situationen sehr nützlich. Beispielsweise kann der Administrator im Falle eines böswilligen Angriffs eine Blacklist-ACL im Nginx-Reverse-Proxy konfigurieren, um den Zugriff auf eine Gruppe von IP-Adressen zu verweigern. Sie können Blacklist-ACLs auch verwenden, um bestimmte häufige Angriffs-URLs abzulehnen.

So konfigurieren Sie eine Blacklist-basierte ACL:

http {
    ...
    # 黑名单acl
    geo $blocked_ip {
        default 0;
        include /path/to/blacklists/ip.txt;
    }
}
Nach dem Login kopieren

In dieser Konfiguration definiert die Geo-Direktive eine Speichervariable mit dem Namen $blocked_ip, die zum Speichern der Liste blockierter IP-Adressen verwendet wird. In diesem Beispiel wird eine externe IP-Adress-Blacklist-Datei verwendet. Das Format der Datei ist wie folgt:

10.2.1.10 1;
192.168.0.0/24 1;
202.102.85.154 1;
Nach dem Login kopieren

Jede Zeile der Datei enthält eine IP-Adresse oder ein Netzwerksegment im CIDR-Format, gefolgt von der Zahl 1, um anzuzeigen, dass diese IP-Adresse oder dieses CIDR-Netzwerksegment blockiert ist.

Als nächstes können Sie diese Blacklist-ACL in der Nginx-Konfiguration verwenden:

server {
    ...
    location / {
        ...
        # 配置黑名单ACL
        if ($blocked_ip) {
            return 403;
        }
        proxy_pass http://backend.com;
    }
}
Nach dem Login kopieren

In dieser Konfiguration wird die if-Anweisung verwendet, um festzustellen, ob die angeforderte IP-Adresse in der Blacklist enthalten ist. Wenn ja, wird direkt eine 403-Zugriffsverbotsantwort zurückgegeben . . Andernfalls wird die Anfrage an den Backend-Proxyserver weitergeleitet.

Zusammenfassend lässt sich sagen, dass der Nginx-Reverse-Proxy ein gutes ACL-Modul bietet, das zusammen mit anderen Funktionsmodulen verwendet werden kann, um eine sehr flexible Anforderungsweiterleitung und Zugriffskontrolle zu erreichen. Bei der Verwendung von Reverse-Proxy können wir uns durch das Verständnis und die Beherrschung dieser Methoden besser an verschiedene Situationen anpassen und die Qualität und Sicherheit von Netzwerkdiensten verbessern.

Das obige ist der detaillierte Inhalt vonACL-Konfiguration basierend auf Schlüsselwörtern und Blacklist im Nginx-Reverse-Proxy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!