中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
如何针对不同的访客来源IP地址显示不同的页面
作者:未知 时间:2005-09-13 19:19 出处:ChinaUnix.net 责编:chinaitpower
              摘要:如何针对不同的访客来源IP地址显示不同的页面

我们有一个客户提出了奇怪的要求,他的WEB服务器要针对不同的访客来源IP地址显示不同的页面,比如对来自省内的IP地址显示一个WEB页面,对来自省外的IP地址显示另外的WEB页面,但用的是同一个域名,比如:www.xxx.com 
他不想在路由器上作任何重定向配置,而想通过软件的方式来实现,比如在WEB服务器上增加一个中间层来实现这个基于IP地址的页面访问控制。
请教各位GGMM,有什么好的方法可以实现吗?谢谢!
(如有任何人能提供这个软件的设计文档或源程序,我司愿出价购买)

 liupch 回复于:2003-03-06 11:13:12
应该不难解决。最主要的是你要拥有一个IP分类表
我现在给你提供2个解决方法。

1,如果你的web server使用apache,那么你可以修改apache源代码,在里面添加一些自己的判断,主要是获取用户的IP,然后根据你的IP分类表来重新定位到不同的叶面。这个方法难度大,但是效果高。

2,把你的叶面全部改成动态叶面,如PHP,JSP等。这样就可以在程序里面作IP判断。从而显示不同的叶面。这个方法容易实现,但是效率不会很高

 花劫容 回复于:2003-03-06 11:23:34
[quote:b591f6a038="liupch"]应该不难解决。最主要的是你要拥有一个IP分类表
我现在给你提供2个解决方法。

1,如果你的web server使用apache,那么你可以修改apache源代码,在里面添加一些自己的判断,主要是获取用户的IP,然后根据你的IP分..........[/quote:b591f6a038]

谢谢liupch,你的建议很好,但我想在我们这里将比较难实现。
因为我们的客户是某政府行业,他们的网管人员不想动任何已有的网络配置,包括web服务器的配置。所以要修改Apache及页面代码的方法可能不太现实。但IP分类表是有,可以在WEB Server上绑定一个IP池。
我的意思是能不能增加一个类似TCP Wrapper的中间层来实现这个访问控制呢?这样只要安装一个软件就可以了,不用去改web server的配置。

再次谢谢你的建议,如有更好的思路,请多多指教!

 liupch 回复于:2003-03-06 11:44:03
如您所说,如果这样的话那的确比较麻烦。
您说的TCP Wrapper这种东西我现在还没听说过有什么公司开发过。
当然您可以自己写这种软件。原理应该是很简单的。他作为apache前面的一个代理,所有的http请求都先发给他,他来做IP判断,然后再转发给不同的apache,或者根据HTTP协议规定,把这个请求在重定向到不同的apache,个人感觉采用重定向的方法要比转发的方式好一些,但是这种软件如果要自己写的话效率不一定高,如果您的网站访问量不是很大,应该不成问题。但如果访问量很大,哪就不好说了。

 花劫容 回复于:2003-03-06 14:18:35
哦,这样子,那再次多谢你的提示。
我这里还有一点疑问,如果我有两个主页面,那么是否需要运行两个独立的Apache来维护?(其实我对Apache配置并非很熟,不知道Apache在一个域名例如www.xxx.com前提下是否能显示两个不同的页面)
如果需要两台Apache来维护的话,那么在接受到HTTP请求后,我可以通过IP地址判断来作重定向,决定该请求是重定向到本机还是网络上的另一台web server对吗?请指教,谢谢,:)

 liupch 回复于:2003-03-06 15:03:21
我觉得不用,可以用一个apache来实现。
只要你在apache里面建立两个不同的目录,就可以了。
假设有两个目录dir1和dir2,里面存放的是不同风格的两套叶面。
假设有一个IP是1。1。1。1的请求访问你www.xxx.com/index.html这个文件。
根据你的要求,你把这个请求重新转向到www.xxx.com/dir1/index.html这个文件。
而另一个来自IP是2。2。2。2的请求,则重新转向到www.xxx.com/dir2/index.html

上面的方法我觉得对于静态叶面来说是可行的,只是效率问题。但是对于动态叶面来说,如php,jsp程序等可能存在一些问题,尤其是这些动态叶面存在身份验证功能时,如cookie和session的机制等。

具体问题我还不好说,因为我没做过这样的应用。以上全部为设想

 花劫容 回复于:2003-03-06 15:30:22
好的,谢谢liupch,你说到这一步已够了。
我想可以自己写出这么一个基于IP的访问控制软件,应该不难。
原理跟TCP Wrapper类似,这个软件在网上到处可以得到,
是一个基于IP的对服务的访问控制控制软件。
有空多交流,我的QQ:10439281

 tutux 回复于:2003-03-06 22:05:21
[quote:f63ce617e0="花劫容"]我们有一个客户提出了奇怪的要求,他的WEB服务器要针对不同的访客来源IP地址显示不同的页面,比如对来自省内的IP地址显示一个WEB页面,对来自省外的IP地址显示另外的WEB页面,但用的是同一个域名,比如:www.xxx.com..........[/quote:f63ce617e0]

可以通过dns实现。

view

 孙轩 回复于:2003-03-07 08:30:04
很简单的,你只要在以他服务器上做两个apache绑在2个ip上然后用ipchians or iptables之类的工作做重定向就可以了

 type 回复于:2003-03-07 12:30:06
[quote:52b5829e5d="tutux"]

可以通过dns实现。

view[/quote:52b5829e5d]
用dns实现负载均衡还可以,如果要根据客户的ip把域名解析成不同的地址那就不行了吧

 sunt 回复于:2003-03-07 13:00:53
通过iptable的nat和forward可以实现

 tutux 回复于:2003-03-10 10:06:20
[quote:ef68a215c4="type"]
用dns实现负载均衡还可以,如果要根据客户的ip把域名解析成不同的地址那就不行了吧[/quote:ef68a215c4]


"根据客户的ip把域名解析成不同的地址"正是bind9 提供的新功能,请看

Bind 9.2.1配置范例  
里面有关于view的用法

https://bbs.bsdbase.com/index.php?act=ST&f=1&t=14&s=

更权威、详细的资料请参考:

http://www.isc.org/products/BIND/bind9.html

http://www.nominum.com/content/documents/bind9arm.pdf

当然,这里的ip应该能分成大略的段,否则,一个一个ip去设置恐怕会烦死人。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有