백엔드 서비스에 대한 Apache 프록시

백엔드 서비스에 대한 Apache 프록시

동일한 서버의 여러 백엔드 서비스에 대한 프록시 역할을 하는 Apache 웹 서버(Linux)용 conf 파일을 생성해야 합니다. 각 백엔드 서비스는 별도의 포트에서 systemd 서비스로 실행됩니다.

conf 파일에는 다음이 포함됩니다.

<VirtualHost: *:80>
    ProxyPass /api/policies/???  http://127.0.0.1:6001/
    ProxyPassReverse /api/policies/???  http://127.0.0.1:6001/

    ProxyPass /api/policies/???/coverages http://127.0.0.1:6002/
    ProxyPassReverse /api/policies/???/coverages http://127.0.0.1:6002/

    ProxyPass /api/policies/???/premiums http://127.0.0.1:6003/
    ProxyPassReverse /api/policies/???/coverages http://127.0.0.1:6003/

</VirtualHost>

??? – URL의 일부가 될 요청 매개변수를 참조합니다. conf에서 이를 어떻게 정의합니까? 어떤 표현을 사용해야 하는지

답변1

여러 가지 접근 방식이 가능합니다.

  1. ProxyPass 지시문을 올바른 순서로 묶습니다.LocationMatch지시어 ; 뭔가 라인에 따라

    <LocationMatch "/api/policies/(.*)/coverages">
        ProxyPass  http://127.0.0.1:6002/
        # ...
    </LocationMatch>
    <LocationMatch "/api/policies/(.*)/premiums">
        ProxyPass  http://127.0.0.1:6003/
        # ...
    </LocationMatch>
    <Location "/api/policies/">
        ProxyPass  http://127.0.0.1:6001/
        # ...
    </Location>
    
  2. mod_rewrite를 사용하세요역방향 프록시[P]패턴 일치를 허용하려면 ProxyPass 지시문 대신 대상을 사용하세요 .

     RewriteRule    "^/api/policies/(.*)/coverages/(.*)"  "http://127.0.0.1:6002/"  [P]
     RewriteRule    "^/api/policies/(.*)/premiums/(.*)"  "http://127.0.0.1:6003/"  [P]
    

관련 정보