동일한 서버의 여러 백엔드 서비스에 대한 프록시 역할을 하는 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
여러 가지 접근 방식이 가능합니다.
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>
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]