我在我的开发框上设置了IIS反向代理,以测试我的应用程序如何处理已通过SSL卸载的请求。
我的应用程序需要重新创建原始请求,追加一些查询字符串参数,并将其发送回客户端。默认情况下,IIS/ARR/URL重写似乎不附加行业标准“X转发-主机”和“X转发-Proto”报头。相反,我能找到的最接近的东西是“X SSL”和“X转发-For”。
我很高兴从“X转发-For”中解析出原始IP,但是当我查看端口时,它似乎没有任何意义。我的SSL反向代理被设置为侦听默认的SSL端口(443),但是头中指定的端口是52585。
我的问题是,有人知道如何确定原始请求的目标端口是什么吗?我希望我的应用程序能够可靠地处理IIS代理的请求,但看起来我必须根据请求是HTTP还是HTTPS来猜测端口。
发布于 2015-03-19 22:39:22
X-Forwarded-For与服务器无关。这是客户的IP地址。它被附加到请求头上,这样web服务器就可以识别真正的客户端而不是反向代理。您提到的其他标题是事实上的标准,这些标准现在已被RFC 7239取代。根据RFC,端口号将包括在Forwarded头的主机部分,如下所示:
Forwarded: for=192.0.2.60;proto=http;host=example.com:888;by=203.0.113.43我怀疑一些反向代理在冒号之后将端口号作为X-Forwarded-Host头的一部分添加,就像在Host头中一样,但是由于它不是定义的标准标头,所以您只需要使用反向代理来查看它。
https://stackoverflow.com/questions/29155841
复制相似问题