博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apache反向代解决绝对路径可能出现的问题
阅读量:4588 次
发布时间:2019-06-09

本文共 793 字,大约阅读时间需要 2 分钟。

Apache2在对应用做反向代理的时候,如果应用的页面中引用的连接或者是资源的地址是相对地址的话,是没有问题的,当应用中引用的地址是绝对地址(比如:)或者是request.getContextPath()的话(比如,页面的一个资源的链接是:aa.jpg),就可能会遇到把这个绝对地址返回给前端的问题,而前端实际上是访问不到这个实际的地址的,这样就会导致资源无法加载

网上有人提出使用ProxyHtml来把生成的html页面中这样的地址给替换掉(原理应该是做字符串的替换)

但是,使用ProxyHtml同样会遇到两个问题

1.无法把所有的地址都给替换掉,比如,写在js里的地址就不能完全替换掉

2.替换了之后,会导致contentLength变化,客户端浏览器如果依靠contentLength来做判断的话,就不准了

更好的解决的方式,是把客户端请求的原始的主机头信息传过去,使用ProxyPreserveHost 指令

407044-20171017100656552-49719694.png

ProxyPreserveHost On

就相当于在nginx中的:

proxy_set_header        Host $host;  proxy_set_header        X-Real-IP $remote_addr;  proxy_set_header        Destination $fixed_destination;

改完之后,重启一下apache,页面中引用的绝对地址和request.getContextPath()在返回到客户端的时候,就会变成正确的,客户端可以访问到的地址了。

关键字:apache ,反向代理,绝对路径,request.getContextPath(),ProxyHtml,ProxyPreserveHost

转载于:https://www.cnblogs.com/jiaoyiping/p/7554859.html

你可能感兴趣的文章
Microsoft 中间语言
查看>>
.NET Framework 简介
查看>>
c#通用语言运行时CLR
查看>>
编译和执行 C# 应用程序
查看>>
c#命名空间
查看>>
c#字面量
查看>>
C# 应用程序文件夹结构
查看>>
c# Format() 方法
查看>>
c#实例
查看>>
c# Format() 方法
查看>>
c# String 常用方法应用
查看>>
c# 枚举和位标志
查看>>
c# 枚举
查看>>
c# System.Enum的方法
查看>>
c# 数组
查看>>
C# 的基本数据类型
查看>>
c# 结构
查看>>
c# 装箱与拆箱
查看>>
c# 引用类型和值类型的内存分配
查看>>
c# 选择结构
查看>>