请问在apache服务器如何实现下面情景的http代理/转发?

huchao218 2008-03-23 12:25:21
情景如下:
(1)在外网有机器一ip为58.0.98.12;
(2)在内网有两台机器,分别是机器二IP为128.128.81.188,上面部署apache server;机器三Ip为128.128.81.145,是部署weblogic的www服务器,可以访问上面的以下页面:
http://128.128.81.145/menu.html
http://128.128.81.145/exchange/login.html
其中http://128.128.81.145/exchange/login.html是http://128.128.81.145/menu.html一个“登陆”按钮的链接页面,
机器一和二外网连同,机器二和三内网连同。

现在我想在机器二128.128.83.188上实行http代理转发,访问内网同网段的机器128.128.83.145www服务,即:
(1)机器一IE浏览器上输入http://128.128.81.188/menu.html,需要机器一IE留言器地址仍然是http://128.128.81.188/menu.html,但实际页面内容为http://128.128.81.145/menu.html。
(2)点击上面的http://128.128.81.188/menu.html页面的“登陆”服务,需要IE地址为是http://128.128.81.188/exchange/login.html,但是页面内容转到http://128.128.81.145/exchange/login.html
从而起到一定的隔离安全防范作用。

我试了试以下方法:
(1)使用apache的重定向rewrite功能,我可以设置http://128.128.81.188/menu.html的方面重定向到http://128.128.81.145/menu.html,但是IE浏览器地址也变成了http://128.128.81.145/menu.html,接下来点击重定向的页面“登陆”就是http://128.128.81.145/exchange/login.html的页面了,没有经过机器二的http代理转发(应该不能登陆了???),access_log日志里也没有记录这次代理access。同理“交易1”也是如此。是不是这个行不通????

(2)使用apache的反向代理功能,我使用的是一个页面写一次代理映射,如:
ProxyPass /menu.html http://128.128.81.188/menu.html
ProxyPassReverse /menu.html http://128.128.81.188/menu.html

ProxyPass /exchange/login.html http://128.128.81.188/exchange/login.html
ProxyPassReverse /exchange/login.html http://128.128.81.188/exchange/login.html
这样起了效果,但好像有点问题,还有如果有很多的页面怎么办?

还有其他好的,简单的方法吗?谢谢




...全文
862 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MavenTalk 2008-12-10
  • 打赏
  • 举报
回复
这个方案不错
huchao218 2008-03-26
  • 打赏
  • 举报
回复
呵呵,前面的问题自己解决的,我也懒得给你开帖了;)
renjun24 2008-03-26
  • 打赏
  • 举报
回复
懒得跟你说,新人好好学习下游戏规则吧
renjun24 2008-03-25
  • 打赏
  • 举报
回复
开新贴提问吧
huchao218 2008-03-25
  • 打赏
  • 举报
回复
why?
huchao218 2008-03-25
  • 打赏
  • 举报
回复
另外:
反向代理服务器端access_log如何记录客户端的真实IP而不是代理服务器的IP?
huchao218 2008-03-25
  • 打赏
  • 举报
回复
可以了,看了看rewrite的[P]flag,强制代理即可
机器二上apache主配置文件httpd.conf增加
RewriteEngine On
RewriteRule ^/(.*) http://128.128.81.145/$1 [P,L]解决。
---------------------------------------------------------
还有一个问题:
生产运行环境中机器一为58.0.98.12(外网),机器三为128.128.81.145(内网),
那么机器二apache是不是需要安装两个网卡?一个网卡配置两个IP可不可以实现?
还是需要安装两个网卡,一个IP设置为外网(比如128.0.78.12)?另一个IP设置为内网(128.128.81.188)?
那么这两个网卡之间数据如何转发?
是不是外网58.0.98.12连接请求机器二apache的外网地址128.0.78.12,然后机器二apache的外网卡将数据转发到内网卡(128.128.81.188),然后在转发到后台www服务器(128.128.81.145)?行得通吗?
renjun24 2008-03-24
  • 打赏
  • 举报
回复
问题解决了吗,没有我再补充
mrshelly 2008-03-23
  • 打赏
  • 举报
回复
另起一个域.不要用IP直接访问

在 188 机上做 反向解析.


www.example.com --->128.128.81.188
exchange.example.com --->128.128.81.188

在 apache 上,做
exchange.example.com 反向解析到 http://128.128.81.145/

24,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧