regex - proxy_pass - nginx try_files



nginx proxy_pass를 사용하여 위치 헤더 수정하기 (1)

regexp를 사용하여 수정할 수는 있지만 더 나은 방법은 프록시 리디렉션을 사용하는 것입니다.

proxy_redirect http://foo.bar/baz/ /;

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect

foo.bar/baz/ 위치 헤더는 /

/baz/api 를 리디렉션하려는 경우에도 작동합니다.

리디렉션에서 포트를 추가하는 경우 http://foo.bar:8080/baz/ 도 추가해야합니다 (별도의 리디렉션).

희망이 도움이!

나는 /api 에 대한 모든 요청을 백엔드 Tomcat REST 서비스에 전달하기 위해 nginx proxy_pass 설정을 가지고있다. 이 서비스는 경우에 따라 요청 유형 (예 Location: http://foo.bar/baz/api/search/1234567 에 따라 달라지는 Location 헤더를 반환합니다. baz 부분은 Tomcat에서 호스팅되기 때문입니다 .

현재 구성은 foo.bar 호스트 이름을 올바르게 다시 작성하지만 baz 부분은 그대로 둡니다. 이것을 벗겨 내고 싶지만 proxy_pass 옵션은 헤더를 지우거나 새 값을 설정하는 것으로 제한됩니다.

예를 들어, 정규 표현식을 사용하여 클라이언트에 전달되기 전에 헤더를 동적으로 수정하는 방법이 있습니까? 이것은 내 nginx 설정입니다 :

location /api {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_max_temp_file_size 0;
    client_max_body_size    10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout   90;
    proxy_send_timeout      90;
    proxy_read_timeout      90;
    proxy_buffers           32 4k;
    proxy_redirect off;

    proxy_pass http://foo.bar:8080/baz/api;
}




proxypass