> 운영 및 유지보수 > 엔진스 > Nginx 역방향 프록시의 URL 일치를 기반으로 하는 ACL 구성

Nginx 역방향 프록시의 URL 일치를 기반으로 하는 ACL 구성

王林
풀어 주다: 2023-06-11 09:43:09
원래의
1700명이 탐색했습니다.

Nginx는 고성능 오픈 소스 웹 서버이자 역방향 프록시 서버로, 확장성과 강력한 구성 옵션을 갖추고 있어 웹 개발에 없어서는 안 될 구성 요소 중 하나입니다. Nginx의 역방향 프록시 기능은 로드 밸런싱과 고가용성을 달성하기 위해 클라이언트에서 여러 백엔드 서버로 요청을 보낼 수 있습니다.

역방향 프록시에서는 백엔드 서버가 여러 서비스를 처리할 수 있으므로 요청을 올바른 백엔드 서버로 전달하려면 요청 URL의 경로에 따라 일치해야 합니다. Nginx는 지정된 URL 규칙에 따라 해당 백엔드 서버로 요청을 라우팅할 수 있는 URL 경로 기반 ACL(액세스 제어 목록) 구성을 제공합니다.

이 글에서는 URL 경로 일치를 기반으로 Nginx 리버스 프록시에서 ACL 구성을 구현하는 방법을 소개합니다.

ACL 구성

ACL은 액세스 권한을 제어하는 ​​데 사용되는 메커니즘으로 특정 규칙에 따라 요청의 액세스 허용 여부를 결정할 수 있습니다. Nginx에서는 location 지시문을 사용하여 ACL 규칙을 구성할 수 있습니다. location 지시문의 구문은 다음과 같습니다. 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

uri 매개변수는 일반 URI 경로 또는 정규식일 수 있습니다. URI 경로를 ACL 규칙으로 사용하는 경우 다음 일치 문자를 사용할 수 있습니다. 🎜
  • =: 정확히 일치합니다. URI 경로가 위치의 값과 정확히 일치하는 경우에만 해당됩니다. 지시에 따라 일치가 성공합니다.
  • ~: 정규식 일치, 대소문자 구분.
  • ~*: 정규식 일치, 대소문자를 구분하지 않습니다.
  • ^~: 접두사 일치, URI 경로가 위치 지시문의 값으로 시작하면 일치가 성공한 것입니다.
🎜예시 데모🎜🎜Nginx 역방향 프록시에 로드 밸런싱이 필요한 세 가지 서비스가 있다고 가정합니다. 해당 서비스의 URI 경로는 🎜
  • /app1
  • /app2
  • /app3
🎜3개의 백엔드 서버로 요청을 전달해야 하며 해당 IP 주소는 🎜
  • 0.1
  • 입니다. >
  • 192.168.0.2
  • 192.168.0.3
🎜다음 Nginx 구성 파일을 사용하여 역방향 프록시 기능을 구현할 수 있습니다. 🎜rrreee🎜위 구성 파일에서 , upstream 지시문을 사용하여 3개의 백엔드 서버를 정의한 다음 server 블록의 location 지시문을 사용하여 각각 3개의 백엔드 서버를 구성합니다. 규칙을 프록시합니다. 요청 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 구성을 구현할 수 있습니다. 🎜rrreee🎜위 구성 파일에서는 location 지시어 함수의 정규식 일치를 사용하여 일치시킵니다. 해당 백엔드 서버에 대한 요청 경로입니다. 🎜
    • ~: 정규식 일치, 대소문자를 구분합니다.
    • ^: 정규식 시작 기호, "^/api"는 요청 경로가 /api로 시작함을 의미합니다.
    • /v1/app1은 요청 경로가 /v1/app1로 끝나는 것을 의미합니다.
    🎜이러한 방식으로 복잡한 URL 경로를 기반으로 일치시켜 보다 자세한 역방향 프록시 제어 및 전달 기능을 달성할 수 있습니다. 🎜🎜요약🎜🎜이 글에서는 Nginx 역방향 프록시의 URL 일치를 기반으로 하는 ACL 구성 방법을 소개합니다. location 지시문과 URI 경로 또는 정규 표현식을 통해 요청 경로를 일치시키고 전달할 수 있습니다. 이 ACL 구성 방법은 여러 백엔드 서버에 대한 로드 밸런싱 및 고가용성을 달성하고 다양한 시나리오의 역방향 프록시 요구 사항을 충족할 수 있습니다. 🎜

위 내용은 Nginx 역방향 프록시의 URL 일치를 기반으로 하는 ACL 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿