成功最有效的方法就是向有经验的人学习!

有反向代理时使用request.url获取地址有端口的问题

新项目上线,由原来的单机版改为了分布式布署,测试中发现程序中获取的url均有后端节点的端口,这很显然是不对的。

https://www.baidi.com:8001/reg.aspx?id=112112
#正确的应为:
https://www.baidi.com/reg.aspx?id=112112

反向代理中在配置时是有向后端传递host值,只不过开发人员在取值时使用的是request.url

在ASP.NET中可以在web.config配置文件appsettings中添加一项配置。

<add key="aspnet:UseHostHeaderForRequestUrl" value="true"/>

在webconfig加上配置后,表明使用请求头的requesturl,但前提是前端代理要向代端传递值才能取到。

另一种解决办法可以在开发时改变一下取值方法,从请求头中取值也是可以的。

proxy_set_header request_url $scheme://$host$request_uri;

Request.Headers["request_url"]

完整示例:

proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header REMOTE-HOST $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

<appSettings>
    <add key="aspnet:UseHostHeaderForRequestUrl" value="true"/>
</appSettings>
赞(0) 打赏
未经允许不得转载:陈桂林博客 » 有反向代理时使用request.url获取地址有端口的问题
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册