Proxy_redirect not working with "refresh"

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

“(proxy_redirect) Sets the text that should be changed in the “Location”
and “Refresh” header fields of a proxied server response.”

All examples I found online only mentioned how it works with “Location”,
and that also works perfectly with me.

But it just doesn’t work with “Refresh” for me. My backend site
http://192.168.1.9/test.html is:

The nginx on my proxy 1.2.3.4 reads:

location / {
proxy_pass http://192.168.1.9;
proxy_set_header Host $host;
proxy_redirect default;
proxy_redirect http://192.168.1.9/ /;
proxy_redirect http://$proxy_host/ /;
proxy_redirect ~.* /;
proxy_redirect / /;
}

You can see I have exhausted all options on that nginx documentation.
But after restarting nginx, “curl 1.2.3.4/test.html” still sees that
“Refresh” line not translated to http://1.2.3.4/, and visiting
http://1.2.3.4/test.html on browser will still redirect me to
http://192.168.1.9/, which is unreachable.

Did I miss anything? Actually I don’t understand that line about
“proxy_set_header Host $host”, I just copied from web.

Thank you!

On Thu, Apr 30, 2015 at 02:43:14AM -0400, John wrote:

Hi there,

That’s not a “Refresh” header field.

That is something in the http response body.

In general, nginx doesn’t mess with the response body.

(You can configure it to, but I tend to dislike doing that.)

Did I miss anything? Actually I don’t understand that line about
“proxy_set_header Host $host”, I just copied from web.

Why does your back-end include the string “http://192.168.1.9/” in its
response body?

Can you make it instead include a string based on the Host: header it
receives? If so, that is what the “proxy_set_header Host $host” is for.

f

Francis D. [email protected]