Heim  >  Artikel  >  Betrieb und Instandhaltung  >  ACL-Konfiguration basierend auf URL-Abgleich im Nginx-Reverse-Proxy

ACL-Konfiguration basierend auf URL-Abgleich im Nginx-Reverse-Proxy

王林
王林Original
2023-06-11 09:43:091594Durchsuche

Nginx ist ein leistungsstarker Open-Source-Webserver und Reverse-Proxy-Server. Seine Skalierbarkeit und leistungsstarken Konfigurationsmöglichkeiten machen ihn zu einer unverzichtbaren Komponente in der Webentwicklung. Die Reverse-Proxy-Funktion von Nginx kann Anforderungen vom Client an mehrere Back-End-Server senden, um Lastausgleich und hohe Verfügbarkeit zu erreichen.

Da in einem Reverse-Proxy der Backend-Server mehrere Dienste verarbeiten kann, muss er entsprechend dem Pfad der Anforderungs-URL abgeglichen werden, um die Anfrage an den richtigen Backend-Server weiterzuleiten. Nginx bietet eine ACL-Konfiguration (Access Control List) basierend auf dem URL-Pfad, mit der Anforderungen gemäß den angegebenen URL-Regeln an den entsprechenden Backend-Server weitergeleitet werden können.

In diesem Artikel wird vorgestellt, wie die ACL-Konfiguration im Nginx-Reverse-Proxy basierend auf dem URL-Pfadabgleich implementiert wird.

ACL-Konfiguration

ACL ist ein Mechanismus zur Steuerung von Zugriffsberechtigungen. Er kann anhand bestimmter Regeln bestimmen, ob einer Anfrage der Zugriff gestattet wird. In Nginx können Sie die Direktive location verwenden, um ACL-Regeln zu konfigurieren. Die Syntax der location-Direktive lautet wie folgt: location指令来配置ACL规则。location指令语法如下:

location [ = | ~ | ~* | ^~ ] uri { ... }

其中uri参数可以是普通的URI路径,也可以是正则表达式。在使用URI路径作为ACL规则时,可以使用如下的匹配符:

  • =: 精确匹配,只有URI路径与location指令中的值完全一致,则匹配成功。
  • ~: 正则表达式匹配,区分大小写。
  • ~*: 正则表达式匹配,不区分大小写。
  • ^~: 前缀匹配,如果URI路径以location指令中的值开头,则匹配成功。

实例演示

假设现在有三个服务需要在Nginx反向代理中进行负载均衡,它们的URI路径分别为:

  • /app1
  • /app2
  • /app3

我们需要将请求转发到三个后端服务器,它们的IP地址分别为:

  • 192.168.0.1
  • 192.168.0.2
  • 192.168.0.3

我们可以使用如下的Nginx配置文件来实现反向代理功能:

http {
    upstream myapp1 {
        server 192.168.0.1;
    }

    upstream myapp2 {
        server 192.168.0.2;
    }

    upstream myapp3 {
        server 192.168.0.3;
    }

    server {
        listen 80;
        server_name myserver.com;

        location /app1 {
            proxy_pass http://myapp1;
        }

        location /app2 {
            proxy_pass http://myapp2;
        }

        location /app3 {
            proxy_pass http://myapp3;
        }
    }
}

上述配置文件中,我们使用upstream指令定义了三个后端服务器,然后在server块中使用location指令分别配置了三个反向代理规则。当请求URI路径为/app1/app2/app3时,Nginx将转发请求到对应的后端服务器,实现负载均衡和高可用性。

URL路径匹配

如果我们的URI路径比较复杂,需要根据一定的规则进行匹配,此时可以使用正则表达式来实现URL路径匹配。

假设现在有两个服务需要在Nginx反向代理中进行负载均衡,它们的URI路径分别为:

  • /api/v1/app1
  • /api/v2/app2

我们需要将请求转发到两个后端服务器,它们的IP地址分别为:

  • 192.168.0.1
  • 192.168.0.2

我们可以使用如下的Nginx配置文件来实现基于URL路径的ACL配置:

http {
    upstream myapp1 {
        server 192.168.0.1;
    }

    upstream myapp2 {
        server 192.168.0.2;
    }

    server {
        listen 80;
        server_name myserver.com;

        location ~ ^/api/v1/app1 {
            proxy_pass http://myapp1;
        }

        location ~ ^/api/v2/app2 {
            proxy_pass http://myapp2;
        }
    }
}

上述配置文件中,我们使用location指令的正则表达式匹配功能,将请求路径匹配到对应的后端服务器。

  • ~: 正则表达式匹配,区分大小写。
  • ^: 正则表达式开始符号,“^/api”表示请求路径以/api开头。
  • /v1/app1表示请求路径以/v1/app1结尾。

通过这种方式,我们可以基于复杂的URL路径进行匹配,实现更加细致的反向代理控制和转发功能。

总结

本文介绍了Nginx反向代理中基于URL匹配的ACL配置方法,通过locationrrreee

Der uri-Parameter kann ein gewöhnlicher URI-Pfad oder ein regulärer Ausdruck sein. Wenn Sie URI-Pfade als ACL-Regeln verwenden, können Sie die folgenden übereinstimmenden Zeichen verwenden: 🎜
  • =: Exakte Übereinstimmung. Nur wenn der URI-Pfad genau mit dem Wert am Speicherort übereinstimmt Direktive, das Match wird erfolgreich sein.
  • ~: Vergleich regulärer Ausdrücke, Groß- und Kleinschreibung beachten.
  • ~*: Vergleich regulärer Ausdrücke, ohne Berücksichtigung der Groß-/Kleinschreibung.
  • ^~: Präfixabgleich. Wenn der URI-Pfad mit dem Wert in der Standortanweisung beginnt, ist der Abgleich erfolgreich.
🎜Beispieldemonstration🎜🎜Angenommen, es gibt drei Dienste, die im Nginx-Reverse-Proxy belastet werden müssen. Ihre URI-Pfade sind: 🎜
  • /app1
  • /app2
  • /app3
🎜Wir müssen die Anfrage an drei Backend-Server weiterleiten, ihre IP-Adressen sind: 🎜
  • 192.168
  • 192.168.0.2
  • 192.168.0.3
🎜Wir können die folgende Nginx-Konfigurationsdatei verwenden, um die Reverse-Proxy-Funktion zu implementieren: 🎜rrreee🎜Die obige Konfiguration In der Datei verwenden wir die Anweisung upstream, um drei Backend-Server zu definieren, und verwenden dann die Anweisung location im Block server, um jeweils drei Backend-Server zu konfigurieren. zu Proxy-Regeln. Wenn der Anforderungs-URI-Pfad /app1, /app2, /app3 ist, leitet Nginx die Anforderung zur Umsetzung an den entsprechenden Back-End-Server weiter Lastausgleich und hohe Verfügbarkeit. 🎜🎜URL-Pfadabgleich🎜🎜Wenn unser URI-Pfad relativ komplex ist und nach bestimmten Regeln abgeglichen werden muss, können reguläre Ausdrücke verwendet werden, um einen URL-Pfadabgleich zu erreichen. 🎜🎜Angenommen, es gibt zwei Dienste, die im Nginx-Reverse-Proxy geladen werden müssen. Ihre URI-Pfade sind: 🎜
  • /api/v1/app1
  • /api/v2 /app2
🎜Wir müssen die Anfrage an zwei Backend-Server weiterleiten, ihre IP-Adressen lauten: 🎜
  • 192.168.0.1
  • 192.168.0.2
  • 🎜Wir können die folgende Nginx-Konfigurationsdatei verwenden, um die ACL-Konfiguration basierend auf dem URL-Pfad zu implementieren: 🎜rrreee🎜In der obigen Konfigurationsdatei verwenden wir den regulären Ausdruck, der mit der location-Direktive übereinstimmt. Funktion zum Abgleichen den Anforderungspfad zum entsprechenden Backend-Server. 🎜
    • ~: Vergleich regulärer Ausdrücke, Groß- und Kleinschreibung beachten.
    • ^: Startsymbol für reguläre Ausdrücke, „^/api“ bedeutet, dass der Anforderungspfad mit /api beginnt.
    • /v1/app1 bedeutet, dass der Anforderungspfad mit /v1/app1 endet.
    🎜Auf diese Weise können wir einen Abgleich basierend auf komplexen URL-Pfaden durchführen, um detailliertere Reverse-Proxy-Kontroll- und Weiterleitungsfunktionen zu erreichen. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird die ACL-Konfigurationsmethode vorgestellt, die auf dem URL-Abgleich im Nginx-Reverse-Proxy basiert. Über die Direktive location und den URI-Pfad oder regulären Ausdruck kann der Anforderungspfad abgeglichen und weitergeleitet werden. Mit dieser ACL-Konfigurationsmethode können Lastausgleich und hohe Verfügbarkeit für mehrere Backend-Server erreicht und die Reverse-Proxy-Anforderungen in verschiedenen Szenarien erfüllt werden. 🎜

Das obige ist der detaillierte Inhalt vonACL-Konfiguration basierend auf URL-Abgleich im Nginx-Reverse-Proxy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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