두 개의 서버를 하나의 프록시로 사용하고 하나에는 모든 비즈니스 로직, 데이터베이스 등을 사용하는 구성이 있습니다.proxy_pass를 와일드 카드 이름이 포함 된 변수 위치로 제한
프록시 서비스에서는 외부 세계에 대한 SSL 연결을 설정하기 위해 nginx를 사용하므로 비즈니스 로직을 인트라넷에서만 사용할 수 있습니다.
프록시를 사용하여 비즈니스 로직의 일부에 대한 액세스를 제한하려고합니다. GeoServer의 API에 대한 액세스 만 제공하고 관리 인터페이스에는 액세스를 제공하지 않습니다. 따라서 /geoserver/abc_def/wfs
과 같은 위치에 대한 액세스를 제한합니다. 다음 프록시 구성을 사용합니다.
location ~ "^/geoserver/(?<building>[a-zA-Z0-9_-]+)/wfs(?<req>.*)" {
proxy_pass http://x.y.z.a/geoserver/$building/wfs$req;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
이것은 쿼리 문자열을 제외하고 작동합니다. 유효한 요청은 /geoserver/abc_def/wfs?version=2.0.0&service=wfs&request=GetCapabilities
이지만 ?
으로 시작하는 쿼리 문자열은 프록시에 의해 전달되지 않습니다.
또한 이것은 나에게 잘못된 것 같습니다. 실제로 프록시를 사용하려면 위치를 /geoserver/*/wfs
으로 제한하고 싶습니다.
같은 :'위치 ~ "^/geoserver /.+/ WFS $"' – danielgpm
@danielgpm가 나는이 메시지가 얻을 :'의 nginx : [emerg가] "proxy_pass"URI 부분을 가질 수 없습니다를 정규 표현식으로 주어진 위치, 또는 내부 e 명명 된 위치 또는 "if"문 내부 또는 "limit_except"블록 내부. 'proxy_pass'는 여전히'proxy_pass http : //x.y.z.a/geoserver/;' –
이고, URL은/wfs 다음에 끝나지 않습니다. 이는 도착 가능한 목적지를 설명하는 패턴 일뿐입니다. 적어도 쿼리 매개 변수가 있습니다. –