| 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去设置恐怕会烦死人。
|