Изменение заголовка местоположения с помощью прокси-сервера nginx
у меня есть nginx в proxy_pass
настройка для передачи каждого запроса на /api
через серверную службу Tomcat REST. Эта служба в некоторых случаях возвращает Location
заголовок, который зависит от типа запроса, например,Location: http://foo.bar/baz/api/search/1234567
-- the 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;
}
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/
также (отдельный редирект).
Надежда это помогает!