IIS reverse proxy with rewrites can't handle a

2020-02-21 06:28发布

问题:

We own server A, and on some occasions we rewrite requests to our partner on server B.

In some cases server B will respond with a redirect to a completely different website, which is what is expected, let's say server C. However, when that redirect form server B comes back to server A, server A interprets it as a redirect to a location on iteself (A) and not as a redirect to other website - server C.

How do I take note of the redirect to the external website and actually go there, rather than assuming that redirect is on my server (and 404ing)? We're running IIS 7 with the rewrite module.

Any help much appreciated.

回答1:

Go to the ARR proxy settings (they're hidden under IIS -> Application Request Routing Cache -> Server Proxy Settings) and uncheck the "Reverse rewrite host in response headers" checkbox. That should be enough.



回答2:

If you can't change this in the GUI, you can set the config via command line.

Something like this should work:

appcmd.exe set config -section:system.webServer/proxy /reverseRewriteHostInResponseHeaders:"False" -commit:apphost


回答3:

The "Reverse rewrite host in response headers" checkbox was in a different place for me. I'm using Windows Server 2012 R2.

It was under Connections -> Server Farms -> -> Proxy, just below the time-out settings.

In my case, checking this resolved my issues.