|
数据库定义
(注:本文档所使用的Title、URL、Domain和Host即是对应在之前版本的config.txt/ezproxy.cfg文本文件内的T、U、D和H。)
配置
通过编辑config.txt/ezproxy.cfg和基于下列规则撰写条目,配置EZproxy来代理特定数据库:
- 每个EZproxy数据库定义必须包含一个Title行、一个URL行,通常包含一个或多个Domain行,有时需要一个或多个Host行。
- 第一行必须是Title行。"Title"后面必须跟着一个数据库的文本描述,通常是数据库的名称。该名称描述将出现在默认菜单页面。
- URL行在Title行后面。"URL"后面必须跟着一个通常用于访问这个数据库的URL。EZproxy自动把这个URL内的host name如同它出现在当前数据库配置的Host行一样对待。在生成默认菜单页面时使用这个URL。
- Domain行和Host在URL行后面。一个Host行表明任何一个包含指定host name的URL都将通过EZproxy代理。一个Domain行表明任何一个包含与Domain行匹配的host name的URL或者以Domain行内容结尾的URL都将通过EZproxy代理。
- 一个典型数据库定义将包括一个Domain行,其含有URL内的host name的最后部分。例如,当URL是http://www.somedb.com,那么标准的Domain行是"Domain somedb.com"。
标准配置
假设您想配置EZproxy来代理名为"Some Database"的数据库,其网址是http://www.somedb.com/search/。这些信息需要被翻译到config.txt/ezproxy.cfg中的一个数据库定义,类似:
Title Some Database
URL http://www.somedb.com/search/
Domain somedb.com
起点URL
当您第一次配置EZproxy,在登陆后,将看到一个默认的数据库菜单页面。此页的主要目的之一是介绍"起点URL"是什么样子的。如果EZproxy服务器被命名为ezproxy.yourlib.org,根据之前的数据库定义生成的起点URL就是:
http://ezproxy.yourlib.org:2048/login?url=http://www.somedb.com/search/
一个"起点URL"是一个可以被放置在任一Web服务器上的一个URL,用于访问一个特定数据库。当用户点击这样一个URL,EZproxy可以检测该用户是来自本地或是远程。当是远程用户时,EZproxy可以判断该用户是否已经完成身份验证。如果是本地用户,EZproxy可以对用户重新指引,使其直接连接到数据库,不通过EZproxy代理,EZproxy本身会完全离开这个通讯回路。如果是远程用户并且尚未进行身份验证,EZproxy将首先对其进行身份验证,然后再将其发送到数据库。
如果"Some Database"推出一个新功能,直接网址是http://www.somedb.com/history/,可以使用这个信息创建一个新的起点URL:
http://ezproxy.yourlib.org:2048/login?url=http://www.somedb.com/history/
请注意这个URL与数据库定义中的URL并不匹配。不过这个URL(www.somedb.com)的host name与上文的数据库定义中的URL的host name完全匹配,因此这个URL是完全可接受的。
如果"Some Database"推出一个新的URL例如http://find.somedb.com/everything/,问题就会出现。从技术上来说,host name"find.somedb.com"与"Domain somedb.com"匹配,但是如果您尝试使用起点URL:
http://ezproxy.yourlib.org:2048/login?url=http://find.somedb.com/everything/
EZproxy将自动产生一个错误,提示您必须在config.txt/ezproxy.cfg内添加这一行:
Host find.somedb.com
如上所述,每个数据库定义只能有一个URL行,那个URL行会创建一个隐含的Host行即是在那个URL内的host name。如果您使用其他host name作为到同一个数据库商提供的其他URL的起点,必须在Host行预先授权其他host name。(在一个起点URL内的host name必须与URL行或Host行内的host name相匹配,此要求是一种安全防范措施。)
额外的JavaScript 处理
Domain指令有一个特殊的副本即DomainJavaScript,在绝大多数例子中以缩写DJ出现。Host指令有HostJavaScript,以缩写HJ出现。这些指令指示有额外的JavaScript程序需执行。例如:
Title Some Database
URL http://www.somedb.com
DJ somedb.com
表示所有是somedb.com或以此结尾的host需要执行额外的JavaScript程序。在一个JavaScript和非JavaScript混合指令,JavaScript指令优先。例如,在:
Title Some Database
URL http://www.somedb.com
Host search.somedb.com
DJ somedb.com
当代理search.somedb.com时,因为其名字与"DJ somedb.com"指令匹配,JavaScript程序将启用。
当进行数据库定义时,建议先从标准指令形式开始。但如果您发现用户从代理溜掉,请尝试使用JavaScript副本看看是否能解决问题。
|