关于Apache 设置反向代理的一个注意问题
博客专区 > caiw 的博客 > 博客详情
关于Apache 设置反向代理的一个注意问题
caiw 发表于3年前
关于Apache 设置反向代理的一个注意问题
  • 发表于 3年前
  • 阅读 51
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Apache 反向代理默认会改写Request head中的host,这样会造成在应用中如果使用reqeust.getHead("host")来做绝对路径的时候存在无法连接的问题。

     Apache 反向代理默认会改写Request head中的host,这样会造成在应用中如果使用reqeust.getHead("host")来做绝对路径的时候存在无法连接的问题。

    网上很多Apache的proxy设置都只写了ProxyPass 和 ProxyPassReverse

 ProxyPass /    http://172.18.100.51/
 ProxyPassReverse  /  http://172.18.100.51/

    这个时候如果在应用中使用reqeust.getHead("host") 或者PHP中使用$_SERVER['HTTP_HOST'] 绝对路径来请求js或者css 就会是172.18.100.5,本地浏览器如果是在外网就无法访问了。

只需要在Apache中添加

ProxyPreserveHost On

就可以解决这个问题

在Apache官方文档中关于他的描述

ProxyPreserveHost Directive
Description:Use incoming Host HTTP request header for proxy request
Syntax:ProxyPreserveHost On|Off
Default:ProxyPreserveHost Off
Context:server config, virtual host, directory
Status:Extension
Module:mod_proxy
Compatibility:Usable in directory context in 2.3.3 and later.
When enabled, this option will pass the Host: line from the incoming request to the proxied host, instead of the hostname specified in the ProxyPass line.
This option should normally be turned Off. It is mostly useful in special configurations like proxied mass name-based virtual hosting, where the original Host header needs to be evaluated bythe backend server.

同理 Nginx 中也有一个类似的参数

proxy_set_header Host $host;



共有 人打赏支持
粉丝 3
博文 15
码字总数 5222
×
caiw
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: