首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
   查看所有帖子 (gipsky)


(1) 2 3 4 ... 169 »


用Apache搭建代理服务器
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
出处:http://www.linuxfly.org/post/120/

几天前出差,在某酒店上网,发现除80外,所有的端口都给屏蔽了。这可麻烦了,很多事情都做不了,后来,只能先从网上找了一个临时代理,然后通过VPN绕过网关,速度慢些,但起码可用吧。回来就马上搭建一个本地的代理服务器,为减轻服务器的负载,不想再多开端口,先试试Apache吧。
我要实现的功能很简单,就是一个正向代理,并可允许通过VPN链接即可:
一、平台
操作系统:红旗DC Server 5.0 SP2
应用平台:Apache 2.0
引用
# rpm -qa|grep httpd
httpd-2.0.52-28.ent.redflag
httpd-suexec-2.0.52-28.ent.redflag

二、配置
修改/etc/httpd/conf/httpd.conf文件,去掉原来的"#"号,或直接增加:
引用

ProxyRequests On

Order deny,allow
Deny from 192.168.1.*
Allow from all


CacheEnable disk /
CacheRoot "/var/cache/mod_proxy"



AllowCONNECT 1194

可以看到,配置非常简单,而且不会影响原来的Vhost设置。需要注意的地方是,若要该代理转发非80端口的数据,必须在Global配置下,增加AllowCONNECT配置,并指定允许的端口,例如OpenVPN默认的1194。
三、反向代理
反向代理,通常就是把一个内网Web服务器通过代理公布到外部,对于Apache来说,可以理解为映射。我没有使用这个配置,只作为说明:
引用
ProxyRequests Off
#反向代理,是不需要打开ProxyRequests的

Order deny allow
Allow from all


然后在配置段下增加:
引用
ProxyPass /mirror http://www.baidu.com/
ProxyPassReverse /mirror http://www.baidu.com/

这样,当访问virtualhost配置的虚拟主机下的mirror目录,即可自动从百度读取。当然,把百度的地址改为内网地址,就可发布内网网站咯。
※补充说明:
举例:我对外只有一台web服务器,但我内网还有一台web服务器提供另外的服务。现在我想把这台服务器也发布到外网上,该如何设置呢?
回复:因为IP只有一个,80端口已经给占用了,所以,应该设置如下的反向代理即可:
首先,建立一个空目录:
mkdir /var/www/html/mail
chown apache.apache /var/www/html/mail

然后,修改配置文件,增加:
引用

ServerAdmin linuxing@mail.linuxfly.org
DocumentRoot /var/www/html/mail/
ServerName mail.linuxfly.org
ErrorLog logs/mail.linuxfly.org_log
CustomLog logs/mail.linuxfly.org_log common
ProxyPass / http://192.168.228.110/
ProxyPassReverse / http://192.168.228.110/


重启Apache服务器即可。以后访问http://mail.linuxfly.org,即会自动转到内网的192.168.228.110的web服务上。
四、用户认证
本来,我是想给正向代理配置一个用户认证的,但就是不成功,似乎Apache只能做到基于目录的认证,请有经验的朋友指教?
以下是《Apache经典实例》中的配置,是基于Apache 1.0的。
先用htpasswd生成用户名和密码文件:
htpasswd -c /etc/httpd/conf/password guest

然后会提示输入两次密码。
修改密码是:
htpasswd -m /etc/httpd/conf/password guest

新增加用户是:
htpasswd /etc/httpd/conf/password guest2

接下来是配置
引用
ProxyPass "/secretserver/" "http://127.0.0.1:8080"
http://127.0.0.1:8080/">
AuthName SecretServer
AuthType Basic
AuthUserFile /etc/httpd/conf/password
Require valid-user


上述截选自英文版O'Reilly -《 Apache Cookbook》- 2003的Recipe 10.8 Requiring Authentication for a Proxied Server。
※Apache 2.2中关于mod_proxy模块的中文说明:


  致谢 | 译者声明 | 本篇译者:金步国 | 本篇译稿最后更新:?年?月?日 | 获取最新版本
Apache模块 mod_proxy
说明 提供HTTP/1.1的代理/网关功能支持
状态 扩展(E)
模块名 proxy_module
源文件 mod_proxy.c
概述
警告

在您没有对服务器采取安全措施之前,请不要用ProxyRequests启用代理。一个开放的代理服务器不仅对您的网络有威胁,对整个因特网来说也同样如此。

此模块实现了Apache的代理/网关。它实现了以下规范的代理:AJP13(Apache JServe Protocol v1.3), FTP, CONNECT(用于SSL), HTTP/0.9, HTTP/1.0, HTTP/1.1 。此模块经配置后可用上述或其它协议连接其它代理模块。

Apache的代理功能(除mod_proxy以外)被划分到了几个不同的模块中:mod_proxy_http, mod_proxy_ftp, mod_proxy_ajp, mod_proxy_balancer, mod_proxy_connect 。这样,如果想使用一个或多个代理功能,就必须将mod_proxy和对应的模块同时加载到服务器中(静态连接或用LoadModule动态加载)。

另外,其它模块还提供了扩展特性。mod_cache及其相关模块提供了缓冲特性。mod_ssl提供的SSLProxy*系列指令可以使用SSL/TLS连接远程服务器。这些提供扩展特性的模块必须在被正确加载和配置以后才能提供这些扩展功能。
top
正向和反向代理

Apache可以被配置为正向(forward)和反向(reverse)代理。

正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。

使用ProxyRequests指令即可激活正向代理。因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。

反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的名字空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

可以使用ProxyPass指令激活反向代理(在RewriteRule指令中使用[P]标记也可以)。配置反向代理并不需要打开ProxyRequests指令。
top
简单示例

下面的例子仅仅是为了给你一个基本概念而帮助入门而已,请仔细阅读每个指令的文档。

另外,如果想使用缓冲特性,请查看mod_cache文档。
正向代理

ProxyRequests On
ProxyVia On


Order deny,allow
Deny from all
Allow from internal.example.com

反向代理

ProxyRequests Off


Order deny,allow
Allow from all


ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
top
控制对代理服务器的访问

您可以通过的阻止功能来控制谁能访问您的代理。示例如下:


Order Deny,Allow
Deny from all
Allow from 192.168.0


要了解更多访问控制信息,请参见mod_authz_host文档。

使用正向代理时严格控制访问权限(使用ProxyRequests指令)是非常重要的。否则你的代理会被客户端利用来访问其它服务器并且隐藏客户端的真实身份。这不仅对您的网络有威胁,对整个因特网来说也同样如此。当使用反向代理(在"ProxyRequests Off"条件下使用ProxyPass指令)的时候访问控制要相对宽松,因为客户端只能连接你配置的特定主机。
top
缓慢启动

如果您使用了ProxyBlock指令,将会在启动时查找并缓存主机名的IP地址以备后继的匹配测试使用。这将会花费几秒或更长的时间,这主要取决于主机名查找的速度。
top
局域网代理

位于局域网内的Apache代理服务器需要经由公司的防火墙转发对外部的请求(使用ProxyRemote指令来配置)。但当它访问局域网内的资源时,它能越过防火墙直接访问目的主机。在访问一个属于局域网的服务器从而进行直接连接时,NoProxy指令就会很有用。

局域网内的用户习惯于不在他们的WWW请求中加入本地域的名称,于是会使用"http://somehost/"来取代http://somehost.example.com/ 。一些商业代理服务器会不管这些,只是采用本地域的配置来简单的伺服这个请求。当使用了ProxyDomain指令来为服务器配置了一个代理服务时,Apache会发出一个重定向应答,以使客户端请求到达正确的、能满足要求的服务器地址。因为这样一来,用户的书签文件就会随之包含完整的主机名,所以这是首选的方法。
top
协议调整

当mod_proxy向一个没有正确实现持久连接(KeepAlive)或HTTP/1.1的原始服务器发送请求的时候,可以通过设置两个环境变量来发送不带持久连接(KeepAlive)的HTTP/1.0请求。这两个变量是通过SetEnv指令设置的。

以下是force-proxy-request-1.0和proxy-nokeepalive的例子:


ProxyPass http://buggyappserver:7001/foo/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

top
请求体

一些请求方法(如POST)包含一个请求体。HTTP协议要求包含请求体的请求或者使用块传输编码(chunked transfer encoding)或者包含一个Content-Length请求头。当将这种请求传递给原始服务器的时候,mod_proxy_http会始终尝试使用Content-Length请求头。但如果原始请求使用的是块编码,那么块编码也同样可以用于上行请求。可以使用环境变量控制这种选择。设置proxy-sendcl可以确保始终发送Content-Length头以与上游服务器保持最大程度的兼容性,而设置proxy-sendchunked可以通过继续使用块编码以尽可能最小化资源占用率。
top
AllowCONNECT 指令
说明 通过代理允许CONNECT的端口号
语法 AllowCONNECT port [port] ...
默认值 AllowCONNECT 443 563
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

AllowCONNECT指令指定了此代理的CONNECT方法可以连接的端口号列表。当今的浏览器在进行https连接请求时使用这种方法,而代理默认会将其转为http。

默认只启用了默认的https端口(443)和默认的snews端口(563)。使用AllowCONNECT指令可以覆盖默认设置而改为仅允许连接列出的端口。

注意,必须确保mod_proxy_connect也同时存在于服务器中,这样才能支持CONNECT 。
top
NoProxy 指令
说明 直接进行连接的主机/域/网络
语法 NoProxy host [host] ...
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

此指令仅适用于局域网内的Apache代理服务器。NoProxy指令指定了一个中间以空格分隔的子网、IP地址、主机和/或域的列表。对某个匹配上述一个或多个列表项的主机的请求将直接被其伺服而不会转交到配置好的ProxyRemote代理服务器。
示例

ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21

NoProxy指令的host参数可以是以下选项之一:



域是一个DNS域名的一部分,并在前面加上点号。它表示一批逻辑上属于同一个DNS区域的主机,也就是所有这些主机名具有相同的后缀,而这个"后缀"就是域。
例子

.com
.apache.org.

域和主机名(一个DNS域甚至也可能有一条DNS"A记录"!)的不同之处在于域始终有一个前导点。
注意

域名不区分大小写并且始终认为是锚定在DNS树根上的,因此.MyDomain.com和.mydomain.com.(注意结尾点号)是完全等同的。因为域的比较不需要进行DNS查询,因此它比子网比较更加高效。
子网

子网以点分十进制形式表示了一个因特网地址的一部分,有时会跟着一个斜杠和子网掩码,以指定子网中的有效bit位。它用于表示主机通过自身的普通网络接口可以访问的子网范围。未指定子网掩码的时候就假定忽略掉的(或为零的)结尾数字就是掩码,在这种情况下,掩码bit长度必须是8bit的整数倍。例如:

192.168或192.168.0.0
子网"192.168.0.0"表示掩码为16bit(有时也用255.255.0.0表示)。
192.168.112.0/21
子网"192.168.112.0/21"表示掩码为21bit(有时也用255.255.248.0表示)。

在退化到极限的情况下,一个掩码为32bit的子网就等价于一个IP地址。而零个合法bit的子网("0.0.0.0/0")等价于常量"_Default_",可以匹配任何IP地址。
IP地址

IP地址以点分十进制形式表示了一个完整的因特网地址。一般来说,此地址代表一个主机,但并不需要一个DNS域名与这个地址对应。
示例

192.168.123.7
注意

一个IP地址不需要为一个DNS系统所解析,所以它能使apache获取更高性能。
主机名

主机名是一个完整的DNS域名,可以通过DNS域名服务解析为一个或多个IP地址。它代表了一个逻辑主机(与域相反)而且必须解析成至少一个IP地址(或经常解析成具有不同IP地址的主机列表)。
例子

prep.ai.mit.edu
www.apache.org
注意

在很多情况下,指定一个IP地址代替主机名会更有效率。因为可以避免一次DNS查询。当使用一个低速的PPP与域名服务器连接时,Apache的域名解析会花费相当可观的时间。

主机名不区分大小写并且始终认为是锚定在DNS树根上的,因此www.MyDomain.comwww.mydomain.com.(注意结尾点号)是完全等同的。

参见

* DNS相关问题

top
指令
说明 应用于所代理资源的容器
语法 ...
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

位于配置段中的指令仅作用于匹配的代理内容。语句中可以使用shell风格的通配符。

比如说:下例仅允许yournetwork.example.com中的主机通过您的代理服务器访问代理内容:


Order Deny,Allow
Deny from all
Allow from yournetwork.example.com


下例将在所有example.com的foo目录下的文件通过代理服务器发送之前用INCLUDES过滤器进行处理:

http://example.com/foo/*>
SetOutputFilter INCLUDES

top
ProxyBadHeader 指令
说明 确定如何处理不合法的应答头
语法 ProxyBadHeader IsError|Ignore|StartBody
默认值 ProxyBadHeader IsError
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy
兼容性 仅在 Apache 2.0.44 及以后的版本中可用

ProxyBadHeader指令决定mod_proxy如何处理不合法的应答头(比如丢失冒号(:))。参数的取值范围如下:

IsError
以"502"(Bad Gateway)应答中止请求。这是默认行为。
Ignore
忽略,就像它们不存在一样。
StartBody
在接收到第一个非法头行时停止读取头,并将剩余部分当作应答体。这样做有助于和一个不规范的、经常忘记在应答头和应答体之间插入空行的后端服务器协同工作。

top
ProxyBlock 指令
说明 设置被代理屏蔽的语句、主机、域
语法 ProxyBlock *|word|host|domain [word|host|domain] ...
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

ProxyBlock指令指定了一个由空格分隔的语句、主机和/或域的列表。对所有匹配这些语句、主机和/或域的HTTP、HTTPS、FTP文档的请求都将被代理服务器阻断。代理模块亦会在启动时尝试确定列表中可能是主机名的项目对应的IP地址,并将其缓冲用于匹配测试。比如说:
示例

ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu

通过IP地址,rocky.wotsamattau.edu将可能同样被匹配。

请注意,wotsamattau已经足够匹配wotsamattau.edu了。

请注意

ProxyBlock *

将屏蔽对所有站点的连接。
top
ProxyDomain 指令
说明 代理请求的默认域名
语法 ProxyDomain Domain
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

此指令仅对位于局域网内的Apache代理服务器有用。ProxyDomain指令指定了apache代理服务器归属的默认域。如果遇到了一个对没有域名的主机的请求,就会根据配置自动生成一个加上了Domain的重定向应答。
示例

ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21
ProxyDomain .mycompany.com
top
ProxyErrorOverride 指令
说明 覆盖代理内容的错误页
语法 ProxyErrorOverride On|Off
默认值 ProxyErrorOverride Off
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy
兼容性 仅在 Apache 2.0 及以后的版本中可用

此指令用于反向代理设置中您想为最终用户提供观感一致的错误页面时。它也同样允许包含文件(通过mod_include的SSI)获取错误号并作出相应的动作。(默认行为是显示被代理的服务器的错误页面,将此项目设为"On"将显示SSI错误信息。)
top
ProxyIOBufferSize 指令
说明 内部缓冲区大小
语法 ProxyIOBufferSize bytes
默认值 ProxyIOBufferSize 8192
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

ProxyIOBufferSize指令用于调整内部缓冲区(作为输入输出数据的暂存器)的大小。取值必须小于等于8192 。

在绝大多数情况下,不需要调整这个设置。
top
指令
说明 应用于匹配正则表达式的代理资源的容器
语法 ...
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

指令基本相同,只是匹配字符串可以为正则表达式。
top
ProxyMaxForwards 指令
说明 转发请求的最大代理数目
语法 ProxyMaxForwards number
默认值 ProxyMaxForwards 10
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy
兼容性 仅在 Apache 2.0 及以后的版本中可用

ProxyMaxForwards指令指定了允许转发请求的最大代理数目。这个设置是为了避免无限代理循环或DoS攻击的发生。
示例

ProxyMaxForwards 15
top
ProxyPass 指令
说明 将一个远端服务器映射到本地服务器的URL空间中
语法 ProxyPass [path] !|url [key=value key=value ...]]
作用域 server config, virtual host, directory
状态 扩展(E)
模块 mod_proxy

该指令允许你将一个远端服务器映射到本地服务器的URL空间中,此时本地服务器并不充当代理角色,而是充当远程服务器的一个镜像。path是一个本地虚拟路径名,url是一个指向远程服务器的部分URL,并且不允许包含查询字符串。
当使用ProxyPass指令时,ProxyRequests指令通常应当被设为 off 。

假设本地服务器地址是:http://example.com/ ,那么,

ProxyPass /mirror/foo/ http://backend.example.com/

将会导致对http://example.com/mirror/foo/bar的本地请求将会在内部转换为一个代理请求:http://backend.example.com/bar

"!"指令对于您不想对某个子目录进行反向代理时很有用。比如说:

ProxyPass /mirror/foo/i !
ProxyPass /mirror/foo http://backend.example.com

将会代理除/mirror/foo/i之外的所有对backend.example.com下/mirror/foo的请求。
注意

顺序很重要,您需要把拒绝指令放置在普通ProxyPass指令之前。

As of Apache 2.1, the ability to use pooled connections to a backend server is available. Using the key=value parameters it is possible to tune this connection pooling. The default for a Hard Maximum for the number of connections is the number of threads per process in the active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM it is controlled by the ThreadsPerChild.

Setting min will determine how many connections will always be open to the backend server. Upto the Soft Maximum or smax number of connections will be created on demand. Any connections above smax are subject to a time to live or ttl. Apache will never create more than the Hard Maximum or max connections to the backend server.

ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
Parameter Default Description
min 0 Minumum number of connections that will always be open to the backend server.
max 1...n Hard Maximum number of connections that will be allowed to the backend server. The default for a Hard Maximum for the number of connections is the number of threads per process in the active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM it is controlled by the ThreadsPerChild. Apache will never create more than the Hard Maximum connections to the backend server.
smax max Upto the Soft Maximum number of connections will be created on demand. Any connections above smax are subject to a time to live or ttl.
ttl - Time To Live for the inactive connections above the smax connections in seconds. Apache will close all connections that has not been used inside that time period.
timeout Timeout Connection timeout in seconds. If not set the Apache will wait until the free connection is available. This directive is used for limiting the number of connections to the backend server together with max parameter.
acquire - If set this will be the maximum time to wait for a free connection in the connection pool. If there are no free connections in the pool the Apache will return SERVER_BUSY status to the client.
keepalive Off This parameter should be used when you have a firewall between your Apache and the backend server, who tend to drop inactive connections. This flag will tell the Operating System to send KEEP_ALIVE messages on inactive connections (interval depends on global OS settings, generally 120ms), and thus prevent the firewall to drop the connection. To enable keepalive set this property value to On.
retry 60 Connection pool worker retry timeout in seconds. If the connection pool worker to the backend server is in the error state, Apache will not forward any requests to that server until the timeout expires. This enables to shut down the backend server for maintenance, and bring it back online later.
loadfactor 1 Worker load factor. Used with BalancerMember. It is a number between 1 and 100 and defines the normalized weighted load applied to the worker.
route - Route of the worker when used inside load balancer. The route is a value appended to seesion id.
redirect - Redirection Route of the worker. This value is usually set dynamically to enable safe removal of the node from the cluster. If set all requests without session id will be redirected to the BalancerMember that has route parametar equal as this value.

If the Proxy directive scheme starts with the balancer:// then a virtual worker that does not really communicate with the backend server will be created. Instead it is responsible for the management of several "real" workers. In that case the special set of parameters can be add to this virtual worker.
Parameter Default Description
lbmethod - Balancer load-balance method. Select the load-balancing scheduler method to use. Either byrequests, to perform weighted request counting or bytraffic, to perform weighted traffic byte count balancing. Default is byrequests.
stickysession - Balancer sticky session name. The value is usually set to something like JSESSIONID或PHPSESSIONID, and it depends on the backend application server that support sessions.
nofailover Off If set to On the session will break if the worker is in error state or disabled. Set this value to On if backend servers do not support session replication.
timeout 0 Balancer timeout in seconds. If set this will be the maximum time to wait for a free worker. Default is not to wait.
maxattempts 1 Maximum number of failover attempts before giving up.

ProxyPass /special-area http://special.example.com/ smax=5 max=10
ProxyPass / balancer://mycluster stickysession=jsessionid nofailover=On
balancer://mycluster>
BalancerMember http://1.2.3.4:8009
BalancerMember http://1.2.3.5:8009 smax=10
# Less powerful server, don't send as many requests there
BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20


When used inside a section, the first argument is omitted and the local directory is obtained from the .

If you require a more flexible reverse-proxy configuration, see the RewriteRule directive with the [P] flag.
top
ProxyPassReverse 指令
说明 调整由反向代理服务器发送的HTTP应答头中的URL
语法 ProxyPassReverse [path] url
作用域 server config, virtual host, directory
状态 扩展(E)
模块 mod_proxy

此指令使Apache调整HTTP重定向应答中Location, Content-Location, URI头里的URL。这样可以避免在Apache作为反向代理使用时,后端服务器的HTTP重定向造成的绕过反向代理的问题。

只有明确指定的应答头会被重写,其它应答头保持不变,并且HTML页面中的URL也不会被修改。如果被代理的内容包含绝对URL引用,那么将会绕过代理。有一个第三方模块可以检查并改写HTML中的URL引用,该模块就是Nick Kew编写的mod_proxy_html。

path是本地虚拟路径的名称。url是远端服务器的部分URL。与ProxyPass指令中的使用方法相同。

例如,假定本地服务器拥有地址http://example.com/ ,那么

ProxyPass /mirror/foo/ http://backend.example.com/
ProxyPassReverse /mirror/foo/ http://backend.example.com/
ProxyPassReverseCookieDomain backend.example.com public.example.com
ProxyPassReverseCookiePath / /mirror/foo/

不仅会把所有对http://example.com/mirror/foo/bar的请求直接转换为对http://backend.example.com/bar的代理请求(由ProxyPass提供的功能),它还会重定向服务器backend.example.com的发送:当http://backend.example.com/bar被它重定向到http://backend.example.com/quux时,Apache会在转交HTTP重定向应答到客户端之前调整它为http://example.com/mirror/foo/quux 。注意:被用于构建URL的主机名与UseCanonicalName指令的设置有关。

注意,此ProxyPassReverse指令亦可与mod_rewrite的代理穿透特性(RewriteRule ... [P])联用。因为它不依赖于相应的ProxyPass指令。

当在配置段中使用时,第一个参数会被忽略而采用由指令指定的本地目录。
top
ProxyPassReverseCookieDomain 指令
说明 Adjusts the Domain string in Set-Cookie headers from a reverse- proxied server
语法 ProxyPassReverseCookieDomain internal-domain public-domain
作用域 server config, virtual host, directory
状态 扩展(E)
模块 mod_proxy

Usage is basically similar to ProxyPassReverse, but instead of rewriting headers that are a URL, this rewrites the domain string in Set-Cookie headers.
top
ProxyPassReverseCookiePath 指令
说明 Adjusts the Path string in Set-Cookie headers from a reverse- proxied server
语法 ProxyPassReverseCookiePath internal-path public-path
作用域 server config, virtual host, directory
状态 扩展(E)
模块 mod_proxy

Usage is basically similar to ProxyPassReverse, but instead of rewriting headers that are a URL, this rewrites the path string in Set-Cookie headers.
top
ProxyPreserveHost 指令
说明 使用进入的HTTP请求头来发送代理请求
语法 ProxyPreserveHost On|Off
默认值 ProxyPreserveHost Off
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy
兼容性 仅在 Apache 2.0.31 及以后的版本中可用

当启用时,此选项将把传入请求的"Host:"行传递给被代理的主机,而不是传递在ProxyPass中指定的主机名。

此选项一般为Off状态。It is mostly useful in special configurations like proxied mass name-based virtual hosting, where the original Host header needs to be evaluated by the backend server.
top
ProxyReceiveBufferSize 指令
说明 代理HTTP和FTP连接的接收缓冲区大小(字节)
语法 ProxyReceiveBufferSize bytes
默认值 ProxyReceiveBufferSize 0
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

ProxyReceiveBufferSize指令为增加的吞吐量指定了代理HTTP和FTP连接的(TCP/IP)网络接收缓冲区。这个值必须大于512 ,或设置为"0"表示使用系统默认的缓冲大小。
示例

ProxyReceiveBufferSize 2048
top
ProxyRemote 指令
说明 用于处理某些特定请求的远端代理
语法 ProxyRemote match remote-server
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

此指令定义了此代理的远端代理。match可以是远端服务器支持的URL形式的名称、或是远端服务器使用的部分URL、或是代表服务器可以接受所有请求的"*"。remote-server是远端服务器的部分URL。语法为:

remote-server = scheme://hostname[:port]

scheme是与远端服务器交换信息时使用的协议;本模块暂时只支持http协议。
示例

ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
ProxyRemote * http://cleversite.com
ProxyRemote ftp http://ftpproxy.mydomain.com:8080

在最后一个例子中,代理会将封装到另外一个HTTP代理请求中的FTP请求转交到另外一个能处理它们的代理去。

此选项也支持反向代理配置:一个后端web服务器可以被嵌入到一个虚拟主机的URL空间中,哪怕它是由另一个代理转交过来的。
top
ProxyRemoteMatch 指令
说明 处理匹配正则表达式的请求的远端代理
语法 ProxyRemoteMatch regex remote-server
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

ProxyRemoteMatch与ProxyRemote令基本相同。除了第一个参数是由一个请求的URL变成了匹配的正则表达式。
top
ProxyRequests 指令
说明 启用正向(标准)代理请求
语法 ProxyRequests On|Off
默认值 ProxyRequests Off
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

此指令将允许或禁止Apache作为正向代理服务器的功能(设置为Off并不会禁用ProxyPass指令)。

在一个典型的反向代理配置中,此可选项一般设置为Off。

为了能够代理HTTP或FTP站点,mod_proxy_http或mod_proxy_ftp必须同时存在于服务器中。
警告

在您没有对服务器采取安全措施之前,请不要用ProxyRequests启用您的代理。一个开放的代理服务器不仅对您的网络有威胁,对整个因特网来说也同样如此。
top
ProxyTimeout 指令
说明 代理请求的网络超时
语法 ProxyTimeout seconds
默认值 ProxyTimeout 300
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy
兼容性 仅在 Apache 2.0.31 及以后的版本中可用

此指令允许用户对代理请求指定一个超时值。当你有一个很慢/错误多多的应用服务器经常挂起,而您宁愿返回一个超时的失败信息也不愿意继续等待不知道多久的时候,这个功能是很有用的。
top
ProxyVia 指令
说明 控制代理对Via应答头的使用
语法 ProxyVia On|Off|Full|Block
默认值 ProxyVia Off
作用域 server config, virtual host
状态 扩展(E)
模块 mod_proxy

此指令控制代理对"Via:"头的使用。它的目的是控制位于代理服务器链中的代理请求的流向。参阅RFC 2616(HTTP/1.1)14.45小节以获得关于"Via:"头的解释。

* 如果设置为默认值Off ,将不会采取特殊的处理。如果一个请求或应答包含"Via:"头,将不进行任何修改而直接通过。
* 如果设置为On每个请求和应答都会对应当前主机得到一个"Via:"头。
* 如果设置为Full ,每个产生的"Via:"头中都会额外加入Apache服务器的版本,以"Via:"注释域出现。
* 如果设置为Block ,每个代理请求中的所有"Via:"头行都将被删除。且不会产生新的"Via:"头。

2011/4/11 14:59
应用扩展 工具箱


JS跨域:利用apache的代理模块完美实现方法
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
正 文:
在做ajax互动效果时,我们需要利用Microsoft.XMLHTTP组件获取远程信息,但出于安全问题,javascript是不允许跨域的,只能在本域内操作数据。而这对于需要进行跨域获取数据的应用来说,无疑是一大障碍。

飘易在研究了众多可以实现js跨域的方法后,发现利用 apache 的proxy代理模块功能,就可以实现完美的js跨域处理了。特和大家分享如下:

1.首先要开启apache的rewrite重写模块和proxy代理模块。

修改apache配置文件 conf/httpd.conf ,去掉以下三行前边的#号
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
重启apache.

2.编写rewrite规则,在当前目录里的.htaccess文件里加入以下语句:

RewriteEngine on
RewriteBase /
RewriteRule ^call-(.*)$ http://www.piaoyi.org/s?wd=$1 [L,R,P,NC]

需要注意的是RewriteRule 后边的重写规则参数
L 立即停止重写操作,并不再应用其他重写规则。
R 是强制外部重定向,因为是要跨域定向到外部域,所以必须有R
P 是强制使用代理转发,这个也是必须的.
NC 是不区分大小写,这个倒是可选,但是为了增加兼容性,最好还是加上.(参考)

做完以上工作后,就基本OK了。现在可以尝试用ajax请求 http://127.0.0.1/call-key 会发现得到的数据是apache已经重新定向了的 http://www.piaoyi.org/s?wd=key 的数据。

这种方式实现的js跨域飘易认为是比较完美的。但需要你有服务器权限,才可以开启 apache配置文件 conf/httpd.conf 的代理模块,重写模块一般的服务器都是开启的。

下面飘易再公布一段利用这个js跨域的方法实现的ajax代码:


以上就是比较全面的方法了(注意 js 是区分大小写的)。但是飘易现在遇到一个问题,就是使用apache的代理模块和重写模块后,我没有实现的功能是: “http://localhost/call-你好” 如果重定向里有汉字,就无法实现重定向了,错误代码如下:
“Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /call-???.
Reason: DNS lookup failure for: www.piaoyi.org

如果对汉字进行url编码,如编码成 http://localhost//call-%BA%C3 ,RewriteRule规则识别不了百分号 %,apache会返回 :“403 Forbidden You don't have permission to access /call- 好
on this server”错误。飘易猜测这是编码问题。暂时留在这,如果哪位大侠有解决方法,请不吝赐教。
作者:flymorn
来源:Flymorn

2011/4/11 14:56
应用扩展 工具箱


S跨域:利用apache的代理模块完美实现方法
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
正 文:
在做ajax互动效果时,我们需要利用Microsoft.XMLHTTP组件获取远程信息,但出于安全问题,javascript是不允许跨域的,只能在本域内操作数据。而这对于需要进行跨域获取数据的应用来说,无疑是一大障碍。

飘易在研究了众多可以实现js跨域的方法后,发现利用 apache 的proxy代理模块功能,就可以实现完美的js跨域处理了。特和大家分享如下:

1.首先要开启apache的rewrite重写模块和proxy代理模块。

修改apache配置文件 conf/httpd.conf ,去掉以下三行前边的#号
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
重启apache.

2.编写rewrite规则,在当前目录里的.htaccess文件里加入以下语句:

RewriteEngine on
RewriteBase /
RewriteRule ^call-(.*)$ http://www.piaoyi.org/s?wd=$1 [L,R,P,NC]

需要注意的是RewriteRule 后边的重写规则参数
L 立即停止重写操作,并不再应用其他重写规则。
R 是强制外部重定向,因为是要跨域定向到外部域,所以必须有R
P 是强制使用代理转发,这个也是必须的.
NC 是不区分大小写,这个倒是可选,但是为了增加兼容性,最好还是加上.(参考)

做完以上工作后,就基本OK了。现在可以尝试用ajax请求 http://127.0.0.1/call-key 会发现得到的数据是apache已经重新定向了的 http://www.piaoyi.org/s?wd=key 的数据。

这种方式实现的js跨域飘易认为是比较完美的。但需要你有服务器权限,才可以开启 apache配置文件 conf/httpd.conf 的代理模块,重写模块一般的服务器都是开启的。

下面飘易再公布一段利用这个js跨域的方法实现的ajax代码:






以上就是比较全面的方法了(注意 js 是区分大小写的)。但是飘易现在遇到一个问题,就是使用apache的代理模块和重写模块后,我没有实现的功能是: “http://localhost/call-你好” 如果重定向里有汉字,就无法实现重定向了,错误代码如下:
“Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /call-???.
Reason: DNS lookup failure for: www.piaoyi.org

如果对汉字进行url编码,如编码成 http://localhost//call-%BA%C3 ,RewriteRule规则识别不了百分号 %,apache会返回 :“403 Forbidden You don't have permission to access /call- 好
on this server”错误。飘易猜测这是编码问题。暂时留在这,如果哪位大侠有解决方法,请不吝赐教。
作者:flymorn
来源:Flymorn

2011/4/11 14:55
应用扩展 工具箱


回复: 逆向工程 打造免杀后门
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
你的Karma积分 0 没有达到帖子要求的标准 10000.
请修炼几日再来吧.

2010/11/8 0:01
应用扩展 工具箱


德勤审计内容(zhuan)
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
转载 德勤审计内容 收藏

计算机控制复核 (Computer Control Testing)
1.公司IT组织架构图,职责分工表
2.公司网络拓扑图
3.公司信息安全策略(包括安全管理制度,IT规划,灾难恢复计划等)
4.系统管理员清单(所指系统包括SAP,Tiptop, Proteam及后台数据库,Windows域等)
5.用户账号密码策略配置截屏
6.用户账号申请及变更申请表(包括2009年1月到12月间各系统账号及域账号的所有申请记录)
7.离职人员清单(2009年1月到12月间的离职人员)
8.机房管理制度及机房进出登记表
9.系统及网络安全管理(访问控制等)
10.系统中批处理设置及日常操作监控文档
11.数据备份策略(备份内容,备份方式,存放机制)
12.服务供应商清单及签订的相关服务协议
13.应用系统变更管理制度及相关文档(包括2009年1月到12月间变更申请,审批,测试及上线)
14.操作系统变更管理制度及相关文档(包括2009年1月到12月间变更申请,审批,测试及上线)
15.数据库变更管理制度及相关文档(包括2009年1月到12月间变更申请,审批,测试及上线)
16.网络变更管理制度及相关文档(包括2009年1月到12月间变更申请,审批,测试及上线)

2010/9/3 23:17
应用扩展 工具箱


回复: 世界50所知名大学提供开放课程
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
香港公开大学提供:进修新天地系列视频课程下载

官网:www.ouhk.edu.hk/WCM

2010/9/1 9:06
应用扩展 工具箱


回复: 世界50所知名大学提供开放课程
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
国立交通大学开放课程:http://ocw.nctu.edu.tw/index.php (理科同学的宝地)
台湾开放式课程联盟:http://www.tocwc.org.tw/ (在交通大学右下角也有链接)

2010/9/1 9:03
应用扩展 工具箱


世界50所知名大学提供开放课程
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
世界50所知名大学提供开放课程: (Top 50 University Open Courseware Collections)

学术权威
1. 麻省理工学院:麻省理工学院有许多人认为是在该国最广泛的开放课件的收集,也正好是著名大学中的第一。学科覆盖范围从建筑、规划到人文、科学,此目录中有惊人的信息数量。(http://ocw.mit.edu/OcwWeb/web/home/home/index.htm)在很早以前就有台湾人开始做MIT的汉化课件,有兴趣的朋友可以去搜一下。

2. 卡内基梅隆大学:这个奇妙的大学有优秀的学术传统。凭借其“开放的学习计划”的目标使每个人都有学习的机会并得到满足。(http://oli.web.cmu.edu/openlearning/forstudents/freecourses

3. 约翰霍普金斯大学彭博公共卫生学院:约翰霍普金斯大学是世界重要的学校之一。虽然他们的课程设置仅限于健康知识,专业的知识使巨量收集成为最好的之一。
http://ocw.jhsph.edu/

4. 斯坦福大学:这个著名的大学为学生提供的课程,可通过iTunes供选择。(http://itunes.stanford.edu/)

5. 圣母大学 :被许多人认为如果不是世界最好也是在该国最好的学校之一。随着如历史,英语和数学等科目开放课件的产品,任何人都可以受益于这种知识的美妙学校。(http://ocw.nd.edu/courselist

6. 杜克大学法律中心的公共领域:杜克大学之一,是在南方最好的学校。如果你对法律感兴趣,杜克大学学科领域的开放式课件可以大大有助于您了解司法系统漫长的道路。(http://www.law.duke.edu/cspd/lectures

常春藤联盟

7. 哈佛医学院:虽然它的课程是限制在医学界,但他们是为在常春藤寻找信息的人很好的资源。哈佛大学提供的课程主题,生物医疗和商业主题不等。(http://mycourses.med.harvard.edu/public/

8. 普林斯顿大学的通道 :这所常春藤盟校有一整套客座讲座。翻译不了了:Yale University ? This wonderful Ivy League institution has a great number of ivy quality open course classes available for all.(http://uc.princeton.edu/main/index.php

9. 耶鲁大学:这所美妙的常春藤盟校中的常春藤有一大批高质量的开放课程班所有可用。主题涵盖历史,文学,以数学和科学范围。(http://open.yale.edu/courses/courses.html

西部学府
10. 加州大学戴维斯分校:美国加州大学的另一学校。课程进行了广泛的各种目录。一些主题包括科学,工程和数学。(http://heather.cs.ucdavis.edu/~matloff/unix.html

11. 华盛顿大学 :华盛顿大学在美国西部是一个极好的大学。开设的课程包括从科学、数学和英语。(http://www.outreach.washington.edu/openuw/

12. 加州大学欧文分校 :加州大学的另一学校提供的大量的课程。可以从网上获得商业、生物科学课程。(http://ocw.uci.edu/courses/

13. 加州大学伯克利分校 :加州大学伯克利分校有激动人心的集合,包括生物学、计算机科学、经济学等等。(http://webcast.berkeley.edu

14. 犹他大学 :U Moodle(在这所学校的开放式课件集合名称)载有大量的信息。历史、英语、教学、和药物治疗只是在此集合所涉及的许多问题中的很少一部分。(http://ocw.utah.edu/courselist

15. 犹他州州立大学:美国犹他州的课程设置十分广泛不等,从第一年中,以文化人类学的一切。学生可以受益于这一伟大机构的知识基础。(http://ocw.usu.edu/courselist

16. 东犹他学院:犹他州校训是:“我们一起达成。”这可能意味着很多东西,但主要是它意味着与他们的开放式课件的产品,他们可以帮助人的知识达到新的水平。(http://ocw.ceu.edu/

17. 犹他谷州立学院:另一个犹他州的学校进入我们的名单。这里所涵盖的主题包括:会计、生物、英语、和工程。(http://open.uvsc.edu/

科罗那地区

18. 塔夫茨大学:位于马萨诸塞州的波士顿,这所受到广泛关注的大学提供了许多基于开放式课件。内容包括,农业研究,生物研究,遗传学,等等。(http://ocw.tufts.edu/CourseList

19. 马萨诸塞大学,波士顿 :提供包括生物学、数学科目范围的开放课件。(http://ocw.umb.edu/

20. 波士顿学院的Front Row:波士顿学院是一个具有悠久历史的优秀学院。为此,它通过播客演讲提供大量优秀资源。(http://frontrow.bc.edu/

21. *经典播客*:哈弗福德学院:如果你对经典名著感兴趣,又不介意听播客,那么哈弗福德学院提供的产品是您完美的解决方案。在您出门的时候也可以了解古典文学。(http://www.haverford.edu/classics/audio

中西部学府

22. 密歇根大学:密歇根州被广泛认为是最好的“平民常春藤”之一,因此它的开放课件的产品应该高度重视。(http://open.umich.edu/education

23. 普渡大学 :有兴趣的人士一定能够受益于这些课程提供的广泛议题。(http://owl.english.purdue.edu/owl/

24. 宾夕法尼亚库茨敦大学:您可能还没有听说过库茨敦,但它是一个神奇美妙的大学城。其开放式课件提供的产品都非常注重商业。在这个艰难的经济环境下,最好有比你
竞争对手更多的知识。(http://www.kutztownsbdc.org/

25. 密歇根州立大学:斯巴达人也加入了越来越开放的课件的倡议。提供了广泛的议题和很多不同的课程,为学习了解一些重要学科领域感兴趣的人。(http://www.msuglobal.com/ocw

英国
26. 牛津大学的文字资料馆:在英国所有大学里牛津大学是最古老,最受人尊敬的。牛津的年龄和它的资源,使这个文本存档成为有兴趣人士的梦幻学术殿堂。(http://ota.ahds.ac.uk

27. Greshem学院:当谈到音乐这个总部设在英国的大学有着坚实的开放式课件提供。欧洲在历史上有最具影响力的音乐创作,因此利用欧洲学校的资源显然是一个明智的决
定。(http://www.gresham.ac.uk/default.asp

28. 格拉斯哥大学:这个总部设在英国的大学有几个艺术的课程。对于感国际视野兴趣的学生,这绝对是一个好的开始。(http://podlearn.arts.gla.ac.uk/downloads.html

29. 萨里大学 :英国另一所提供广泛的课程目录、英语和经典名著的大学。(http://info.ee.surrey.ac.uk/Teaching/

30. 诺丁汉大学:这所大学拥有丰富的历史,它的开放式课件产品反映了它的历史。对感兴趣的人从这些产品能够真正受惠是极好的。(http://unow.nottingham.ac.uk/

31. 剑桥大学播客:剑桥大学是世界首要的学府之一。因此其丰富的播客产品信息提供给世界各地的人们,这当然是一件好事。(http://mediaplayer.group.cam.ac.uk/main/Podcasts.html

国际部分
32. 东京大学:是日本的一流大学之一,他不断加入了开放课件的学时。东京大学提供网上举办的讲座,内容从商业到心理学。(http://ocw.u-tokyo.ac.jp/category/eng_courselist

33. 南部昆士兰大学 :这项倍受关注的澳大利亚大学提供了免费课程,包括学科、技术、一般科学等等。(http://ocw.usq.edu.au/

34. 哥伦比亚国立大学:虽然这个网站是在西班牙,但它仍然具有很大的大量信息可提供。你可能需要有人为您翻译。(http://www.virtual.unal.edu.co/u ... Code=viewOfFacultys)

35. 香港大学建筑学课程:另一个进入我们国际名单的是香港大学。课程提供完全是集中在建筑,这绝对是一个单一的最佳去处,以及自由,有关该领域的信息。
http://www.arch.hku.hk/~cmhui/teach/

36. 联合国大学:你可能从未听说过这个学校,但它的开放式课件产品是一个传奇。所涉及的问题包括:一些电子政务,和生物多样性。(http://www.ocw.unu.edu/ocw/Courses_listing

纯粹在网上的
37. 维基大学:维基是一个具有广泛影响的项目,旨在提供一个开放式课件信息过多向全世界的人。这种开放课件几乎涵盖每一个可以想象到的话题,并在不断增长。(http://en.wikiversity.org/wiki/Wikiversity:Main_Page

38. 公开大学:这所大学的唯一目的是给在线学生提供免费的信息和学习材料。考虑到这一点,人很高兴地得知自己的进度,并通过论坛的形式独立研究小组。
http://openlearn.open.ac.uk/

39. 西部州长大学:在人文科科学领域西部州长大学是重要的在线课程设置。文科教育的价值仍然显着,因此利用这些课程提供的优势是一个很好的决定。
http://ocw.wgu.edu/courselist

40. 特朗普大学 :如果你对了解企业和企业家更感兴趣,那么这的课件为您提供完美的集合。(http://www.trumpuniversity.com/entrepreneurship/index.cfm

41. 卡普兰诺学院:虽然这个学院没有得到很好的外部环境和已知的开放式课件,但仍是对感兴趣的人具有在学习无需支付传统的费用更的信息神奇商店。
http://ocw.capcollege.bc.ca/courselist

42. 新闻大学 :如果你对在报刊或一般写作兴趣,那么由这所大学提供的开放课件产品是值得一试。(http://www.newsu.org/courses

43. 电子杂志大学:电子杂志大学的重点是提供人员的自由,而且容易理解有关书面资料。如果你对聚合发行感兴趣,那这是一个奇妙的资源。(http://www.ezineuniversity.com/courses/

不太为人所知,同样是有益的
44. 代尔夫特理工大学:尽管这所大学并不被众人所知,但在此列出,在技术主题的课件产品,希望了解从设计到编程的人都更出色。(http://ocw.tudelft.nl/

45. 韦伯州立大学:如果你在学习英语、健康、汽车机械,那么对由华盛顿州立大学提供的这些美妙的部分课程会更感兴趣。(http://ocw.weber.edu/courselist

46. 蒙特雷国际研究所的技术和教育 :加利福尼亚州蒙特雷是睛好的,…….。 完全不知道讲的是啥意思~(http://www.archive.org/details/ap_courses

47. 职训局大学:职业训练局大学有一个关于技术课程的优秀产品。具体来说有计算机软件的培训和基本编程的人适合刚刚开始进入高科技空间的人。(http://www.vtc.com/index.php

48. 伯克利音乐学院:对于那些在音乐上有兴趣的人,伯克利有一个自由的,可以帮助您学习如何演奏乐器,将有大量资源发挥你的才能或改善你的才能。(http://www.berkleeshares.com/

49. 西肯塔基大学:WKU有各种各样免费的不同的学术论题的播客。当您在旅途中你可以听感兴趣的历史和数学讲座。(http://blog.wku.edu/podcasts

50. 会德丰学院 :这个学院是相当小和不知名的,但是它的资源是独一无二的。它的开放式课件目录包括了使用大量的信息很多。(http://ocw.wheelock.edu/

2010/9/1 8:56
应用扩展 工具箱


kettle
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
http://blog.csdn.net/cissyring/archive/2008/05/29/2493865.aspx

下载:http://sourceforge.net/projects/pentaho/files/

http://sourceforge.net/projects/teatrove/files/

文章一:ETL和Kettle简介
ETL 即数据抽取( Extract )、转换( Transform )、装载( Load )的过程。它是构建数据仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。数据仓库系统中有可能存在着大量的噪声数据 , 引起的主要原因有:滥用缩写词、惯用语、数据输入错误、重复记录、丢失值、拼写变化等。即便是一个设计和规划良好的数据库系统,如果其中存在着大量的噪声数据,那么这个系统也是没有任何意义的,因为 “ 垃圾进,垃圾出 ” ( garbage in, garbage out ),系统根本就不可能为决策分析系统提供任何支持。为了清除噪声数据,必须在数据库系统中进行数据清洗。目前有不少数据清洗研究和 ETL 研究,但是如何在 ETL 过程中进行有效的数据清洗并使这个过程可视化,此方面研究不多。本文主要从两个方面阐述 ETL 和数据清洗的实现过程: ETL 的处理方式和数据清洗的实现方法。
(1) ETL 的处理方式
本文所采用的 ETL 方法是数据库段区域中的 ETL 处理方式,它不使用外部引擎而是使用数据库作为唯一的控制点。由于源系统 SQLserver2000 是关系数据库,它的段表也是典型的关系型表。成功地将外部未修改数据载入数据库后,再在数据库内部进行转换。数据库段区域中的 ETL 处理方式执行的步骤是提取、装载、转换,即通常所说的 ELT 。这种方式的优点是为抽取出的数据首先提供一个缓冲以便于进行复杂的转换,减轻了 ETL 进程的复杂度。
(2) ETL 过程中实现数据清洗的实现方法
首先,在理解源数据的基础上实现数据表属性一致化。为解决源数据的同义异名和同名异义的问题,可通过元数据管理子系统,在理解源数据的同时,对不同表的属性名根据其含义重新定义其在数据挖掘库中的名字,并以转换规则的形式存放在元数据库中,在数据集成的时候,系统自动根据这些转换规则将源数据中的字段名转换成新定义的字段名,从而实现数据挖掘库中的同名同义。
其次,通过数据缩减,大幅度缩小数据量。由于源数据量很大,处理起来非常耗时,所以可以优先进行数据缩减,以提高后续数据处理分析效率。
最后,通过预先设定数据处理的可视化功能节点,达到可视化的进行数据清洗和数据转换的目的。针对缩减并集成后的数据,通过组合预处理子系统提供各种数据处理功能节点,能够以可视化的方式快速有效完成数据清洗和数据转换过程。


2. KETTLE 简介
现在是一个 Google 的时代,而对于开发者,开源已成为最重要的参考书。对于某课题,不管你是深入研究还是初窥门径。估且 google 一把,勾一勾同行的成就,你必会获益良多。
说到 ETL 开源项目, Kettle 当属翘首,项目名称很有意思,水壶。按项目负责人 Matt 的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。呵呵,外国人都很有联想力。
看了提供的文档,然后对发布程序的简单试用后,可以很清楚得看到 Kettle 的四大块:
Chef ??工作 (job) 设计工具 (GUI 方式 )
Kitchen ??工作 (job) 执行器 ( 命令行方式 )
Spoon ??转换 (transform) 设计工具 (GUI 方式 )
Span ??转换 (trasform) 执行器 ( 命令行方式 )
2.1. Chef ??工作(job) 设计器
这是一个 GUI 工具,操作方式主要通过拖拖拉拉,勿庸多言,一看就会。
何谓工作? 多个作业项,按特定的工作流串联起来,开成一项工作。正如:我的工作是软件开发。我的作业项是:设计、编码、测试!先设计,如果成功,则编码,否则继续设计,编码完成则开始设计,周而复始,作业完成。
2.1.1. Chef 中的作业项包括:
转换 :指定更细的转换任务,通过 Spoon 生成。通过 Field 来输入参数;
SQL : sql 语句执行;
FTP :下载 ftp 文件;
邮件 :发送邮件;
检查表是否存在 ;
检查文件是否存在 ;
执行 shell 脚本 :如 dos 命令。
批处理 : ( 注意: windows 批处理不能有输出到控制台 ) 。
Job 包 :作为嵌套作业使用。
JavaScript 执行 :这个比较有意思,我看了一下源码,如果你有自已的 Script 引擎,可以很方便的替换成自定义 Script ,来扩充其功能;
SFTP :安全的 Ftp 协议传输;
HTTP 方式的上 / 下传 。
2.1.2. 工作流
如上文所述,工作流是作业项的连接方式。分为三种:无条件,成功,失败,为了方便工作流使用, KETTLE 提供了几个辅助结点单元 ( 也可将其作为简单的作业项 ) :
Start 单元 :任务必须由此开始。设计作业时,以此为起点。
OK 单元 :可以编制做为中间任务单元,且进行脚本编制,用来控制流程。
ERROR 单元 :用途同上。
DUMMY 单元 :什么都不做,主要是用来支持多分支的情况,文档中有例子。
2.1.3. 存储方式
支持 XML 存储,或存储到指定数据库中。
一些默认的配置 ( 如数据库存储位置…… ) ,在系统的用户目录下,单独建立了一个 .Kettle 目录,用来保存用户的这些设置。
2.1.4. LogView :
可查看执行日志。
2.2. Kitchen ??作业执行器
是一个作业执行引擎,用来执行作业。这是一个命令行执行工具,没啥可讲的,就把它的参数说明列一下。
-rep : Repository name 任务包所在存储名
-user : Repository username 执行人
-pass : Repository password 执行人密码
-job : The name of the job to launch 任务包名称
-dir : The directory (don't forget the leading / or \)
-file : The filename (Job XML) to launch
-level : The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日志级别
-log : The logging file to write to 指定日志文件
-listdir : List the directories in the repository 列出指定存储中的目录结构。
-listjobs : List the jobs in the specified directory 列出指定目录下的所有任务
-listrep : List the defined repositories 列出所有的存储
-norep : Don't log into the repository 不写日志
嗯,居然不支持调度。看了一下文档,建议使用操作系统提供的调度器来实现调度,比如: Windows 可以使用它的任务计划工具。
2.3. Spoon ??转换过程设计器
GUI 工作,用来设计数据转换过程,创建的转换可以由 Pan 来执行,也可以被 Chef 所包含,作为作业中的一个作业项。
下面简单列举一下所有的转换过程。 ( 简单描述,详细的可见 Spoon 文档 )
2.3.1. Input-Steps :输入步骤
l Text file input :文本文件输入
可以支持多文件合并,有不少参数,基本一看参数名就能明白其意图。
l Table input :数据表输入
实际上是视图方式输入,因为输入的是 sql 语句。当然,需要指定数据源 ( 数据源的定制方式在后面讲一下 )
l Get system info :取系统信息
就是取一些固定的系统环境值,如本月最后一天的时间,本机的 IP 地址之类。
l Generate Rows :生成多行。
这个需要匹配使用,主要用于生成多行的数据输入,比如配合 Add sequence 可以生成一个指定序号的数据列。
l XBase Input
l Excel Input
l XML Input
这三个没啥可讲的,看看参数就明了。
2.3.2. Output-Steps : 输出步聚
l Text file output :文本文件输出。这个用来作测试蛮好,呵呵。很方便的看到转换的输出。
l Table output :输出到目的表。
l Insert/Update :目的表和输入数据行进行比较,然后有选择的执行增加,更新操作。
l Update :同上,只是不支持增加操作。
l XML Output :
2.3.3. Look-up :查找操作
l Data Base
l Stream
l Procedure
l Database join
2.3.4. Transform 转换
l Select values
对输入的行记录数据 的字段进行更改 ( 更改数据类型,更改字段名或删除 ) 数据类型变更时,数据的转换有固定规则,可简单定制参数。可用来进行数据表的改装。
l Filter rows
对输入的行记录进行 指定复杂条件 的过滤。 用途可扩充 sql 语句现有的过滤功能。但现有提供逻辑功能超出标准 sql 的不多。
l Sort rows
对指定的列以升序或降序排序,当排序的行数超过 5000 时需要临时表。
l Add sequence
为数据流增加一个序列,这个配合其它 Step(Generate rows, rows join) ,可以生成序列表,如日期维度表 ( 年、月、日 ) 。
l Dummy
不做任何处理,主要用来作为分支节点。
l Join Rows
对所有输入流做笛卡儿乘积。
l Aggregate
聚合,分组处理
l Group by
分组,用途可扩充 sql 语句现有的分组,聚合函数。但我想可能会有其它方式的 sql 语句能实现。
l Java Script value
使用 mozilla 的 rhino 作为脚本语言,并提供了很多函数,用户可以在脚本中使用这些函数。
l Row Normaliser
该步骤可以从透视表中还原数据到事实表,通过指定维度字段及其分类值,度量字段,最终还原出事实表数据。
l Unique rows
去掉输入流中的重复行,在使用该节点前要先排序,否则只能删除连续的重复行。
l Calculator
提供了一组函数对列值进行运算,用该方式比用户自定义 JAVA SCRIPT 脚本速度更快。
l Merge Rows
用于比较两组输入数据,一般用于更新后的数据重新导入到数据仓库中。
l Add constants :
增加常量值。
l Row denormaliser
同 Normaliser 过程相反。
l Row flattener
表扁平化处理,指定需处理的字段和扃平化后的新字段,将其它字段做为组合 Key 进行扃平化处理。
2.3.5. 除了上述基本节点类型外还定义了扩展节点类型
l SPLIT FIELDS
按指定分隔符拆分字段
l EXECUTE SQL SCRIPT
执行 SQL 语句
l CUBE INPUT
l CUBE OUTPUT
2.3.6. 其它
l 存储方式: 与 Chef 相同。
l 数据源 (Connection) ;见后。
l Hops : setp 连接起来,形成 Hops 。
l Plugin step types 等节点:这个没仔细看,不知如何制作 Plugin step 。
l LogView :可查看执行日志。
2.4. Pan ??转换的执行工具
命令行执行方式,可以执行由 Spoon 生成的转换任务。同样,不支持调度。参数与 Kitchen 类似,可参见 Pan 的文档。
2.5. 其它
Connection
可以配置多个数据源,在 Job 或是 Trans 中使用,这意味着可以实现跨数据库的任务。支持大多数市面上流行的数据库。
2.6. 个人感觉:( 本人不成熟的看法)
1、 转换功能全,使用简洁。作业项丰富,流程合理。但缺少调度。
2、 java 代码,支持的数据源范围广,所以,跨平台性较好。
3、 从实际项目的角度看,和其它开源项目类似,主要还是程序员的思维,缺少与实际应用项目 ( 专业领域 ) 的更多接轨,当然,项目实施者的专注点可能在于一个平台框架,而非实际应用 ( 实际应用需要二次开发 ) 。
4、 看过了大多数源码,发现源码的可重用性不是太好 ( 缺少大粒度封装 ) ,有些关键部分好像有 Bug 。比如:个别 class 过于臃肿,线程实现的同步有问题。
5、 提供的工具有些小错,如参数的容错处理。
3. ETL 小结
做数据仓库系统,ETL是关键的一环。说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具。回忆一下工作这么些年来,处理数据迁移、转换的工作倒还真的不少。但是那些工作基本上是一次性工作或者很小数据量,使用access、 DTS或是自己编个小程序搞定。可是在数据仓库系统中,ETL上升到了一定的理论高度,和原来小打小闹的工具使用不同了。究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成3个步骤,E、T、L分别代表抽取、转换和装载。
其实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。但在数据仓库中,ETL有几个特点,一是数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。
现在有很多成熟的工具提供ETL功能,例如datastage、powermart 等,且不说他们的好坏。从应用角度来说,ETL的过程其实不是非常复杂,这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中。举个例子,VB是一种非常简单的语言并且也是非常易用的编程工具,上手特别快,但是真正VB的高手有多少?微软设计的产品通常有个原则是“将使用者当作傻瓜”,在这个原则下,微软的东西确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了。 ETL工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率。从使用效果来说,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得他的整体效率会高多少。问题主要不是出在工具上,而是在设计、开发人员上。他们迷失在工具中,没有去探求ETL的本质。
可以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之处,它必定体现了ETL的本质。如果我们不透过表面这些工具的简单使用去看它背后蕴涵的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。大家都知道“理论与实践相结合”,如果在一个领域有所超越,必须要在理论水平上达到一定的高度


4. ETL 本质
4.1. ETL 特点
ETL的过程就是数据流动的过程,从不同异构数据源流向统一的目标数据。其间,数据的抽取、清洗、转换和装载形成串行或并行的过程。ETL的核心还是在于T这个过程,也就是转换,而抽取和装载一般可以作为转换的输入和输出,或者,它们作为一个单独的部件,其复杂度没有转换部件高。和OLTP系统中不同,那里充满这单条记录的insert、update和select等操作,ETL过程一般都是批量操作,例如它的装载多采用批量装载工具,一般都是DBMS系统自身附带的工具,例如Oracle SQLLoader和DB2的autoloader等。
ETL本身有一些特点,在一些工具中都有体现,下面以datastage和powermart举例来说。
1、静态的ETL单元和动态的ETL单元实例;一次转换指明了某种格式的数据如何格式化成另一种格式的数据,对于数据源的物理形式在设计时可以不用指定,它可以在运行时,当这个ETL单元创建一个实例时才指定。对于静态和动态的ETL单元,Datastage没有严格区分,它的一个Job就是实现这个功能,在早期版本,一个Job同时不能运行两次,所以一个Job相当于一个实例,在后期版本,它支持multiple instances,而且还不是默认选项。Powermart中将这两个概念加以区分,静态的叫做Mapping,动态运行时叫做Session。
2、ETL元数据;元数据是描述数据的数据,他的含义非常广泛,这里仅指ETL的元数据。主要包括每次转换前后的数据结构和转换的规则。ETL元数据还包括形式参数的管理,形式参数的ETL单元定义的参数,相对还有实参,它是运行时指定的参数,实参不在元数据管理范围之内。
3、数据流程的控制;要有可视化的流程编辑工具,提供流程定义和流程监控功能。流程调度的最小单位是ETL单元实例,ETL单元是不能在细分的ETL过程,当然这由开发者来控制,例如可以将抽取、转换放在一个ETL单元中,那样这个抽取和转换只能同时运行,而如果将他们分作两个单元,可以分别运行,这有利于错误恢复操作。当然,ETL单元究竟应该细分到什么程度应该依据具体应用来看,目前还没有找到很好的细分策略。比如,我们可以规定将装载一个表的功能作为一个ETL单元,但是不可否认,这样的ETL单元之间会有很多共同的操作,例如两个单元共用一个Hash表,要将这个Hash表装入内存两次。
4、转换规则的定义方法;提供函数集提供常用规则方法,提供规则定义语言描述规则。
5、对数据的快速索引;一般都是利用Hash技术,将参照关系表提前装入内存,在转换时查找这个hash表。Datastage中有Hash文件技术,Powermart也有类似的Lookup功能。
4.2. ETL 类型
昨在IT-Director上阅读一篇报告,关于ETL产品分类的。一般来说,我们眼中的ETL工具都是价格昂贵,能够处理海量数据的家伙,但是这是其中的一种。它可以分成4种,针对不同的需求,主要是从转换规则的复杂度和数据量大小来看。它们包括:
1、交互式运行环境,你可以指定数据源、目标数据,指定规则,立马ETL。这种交互式的操作无疑非常方便,但是只能适合小数据量和复杂度不高的ETL过程,因为一旦规则复杂了,可能需要语言级的描述,不能简简单单拖拖拽拽就可以的。还有数据量的问题,这种交互式必然建立在解释型语言基础上,另外他的灵活性必然要牺牲一定的性能为代价。所以如果要处理海量数据的话,每次读取一条记录,每次对规则进行解释执行,每次在写入一条记录,这对性能影响是非常大的。
2、专门编码型的,它提供了一个基于某种语言的程序框架,你可以不必将编程精力放在一些周边的功能上,例如读文件功能、写数据库的功能,而将精力主要放在规则的实现上面。这种近似手工代码的性能肯定是没话说,除非你的编程技巧不过关(这也是不可忽视的因素之一)。对于处理大数据量,处理复杂转换逻辑,这种方式的ETL实现是非常直观的。
3、代码生成器型的,它就像是一个ETL代码生成器,提供简单的图形化界面操作,让你拖拖拽拽将转换规则都设定好,其实他的后台都是生成基于某种语言的程序,要运行这个ETL过程,必须要编译才行。Datastage就是类似这样的产品,设计好的job必须要编译,这避免了每次转换的解释执行,但是不知道它生成的中间语言是什么。以前我设计的ETL工具大挪移其实也是归属于这一类,它提供了界面让用户编写规则,最后生成C++语言,编译后即可运行。这类工具的特点就是要在界面上下狠功夫,必须让用户轻松定义一个ETL过程,提供丰富的插件来完成读、写和转换函数。大挪移在这方面就太弱了,规则必须手写,而且要写成标准c++语法,这未免还是有点难为最终用户了,还不如做成一个专业编码型的产品呢。另外一点,这类工具必须提供面向专家应用的功能,因为它不可能考虑到所有的转换规则和所有的读写,一方面提供插件接口来让第三方编写特定的插件,另一方面还有提供特定语言来实现高级功能。例如Datastage提供一种类Basic的语言,不过他的Job的脚本化实现好像就做的不太好,只能手工绘制job,而不能编程实现Job。
4、最后还有一种类型叫做数据集线器,顾名思义,他就是像Hub一样地工作。将这种类型分出来和上面几种分类在标准上有所差异,上面三种更多指ETL实现的方法,此类主要从数据处理角度。目前有一些产品属于EAI(Enterprise Application Integration),它的数据集成主要是一种准实时性。所以这类产品就像Hub一样,不断接收各种异构数据源来的数据,经过处理,在实施发送到不同的目标数据中去。
虽然,这些类看似各又千秋,特别在BI项目中,面对海量数据的ETL时,中间两种的选择就开始了,在选择过程中,必须要考虑到开发效率、维护方面、性能、学习曲线、人员技能等各方面因素,当然还有最重要也是最现实的因素就是客户的意象。
4.3. ETL 中的转换-Transication
ETL探求之一中提到,ETL过程最复杂的部分就是T,这个转换过程,T过程究竟有哪些类型呢?
4.3.1. 宏观输入输出方面
从对数据源的整个宏观处理分,看看一个ETL过程的输入输出,可以分成下面几类:
1、大小交,这种处理在数据清洗过程是常见了,例如从数据源到ODS阶段,如果数据仓库采用维度建模,而且维度基本采用代理键的话,必然存在代码到此键值的转换。如果用SQL实现,必然需要将一个大表和一堆小表都Join起来,当然如果使用ETL工具的话,一般都是先将小表读入内存中再处理。这种情况,输出数据的粒度和大表一样。
2、大大交,大表和大表之间关联也是一个重要的课题,当然其中要有一个主表,在逻辑上,应当是主表Left Join辅表。大表之间的关联存在最大的问题就是性能和稳定性,对于海量数据来说,必须有优化的方法来处理他们的关联,另外,对于大数据的处理无疑会占用太多的系统资源,出错的几率非常大,如何做到有效错误恢复也是个问题。对于这种情况,我们建议还是尽量将大表拆分成适度的稍小一点的表,形成大小交的类型。这类情况的输出数据粒度和主表一样。
3、站着进来,躺着出去。事务系统中为了提高系统灵活性和扩展性,很多信息放在代码表中维护,所以它的“事实表”就是一种窄表,而在数据仓库中,通常要进行宽化,从行变成列,所以称这种处理情况叫做“站着进来,躺着出去”。大家对 Decode肯定不陌生,这是进行宽表化常见的手段之一。窄表变宽表的过程主要体现在对窄表中那个代码字段的操作。这种情况,窄表是输入,宽表是输出,宽表的粒度必定要比窄表粗一些,就粗在那个代码字段上。
4、聚集。数据仓库中重要的任务就是沉淀数据,聚集是必不可少的操作,它是粗化数据粒度的过程。聚集本身其实很简单,就是类似SQL中Group by的操作,选取特定字段(维度),对度量字段再使用某种聚集函数。但是对于大数据量情况下,聚集算法的优化仍是探究的一个课题。例如是直接使用SQL的 Group by,还是先排序,在处理。
4.3.2. 微观规则
从数据的转换的微观细节分,可以分成下面的几个基本类型,当然还有一些复杂的组合情况,例如先运算,在参照转换的规则,这种基于基本类型组合的情况就不在此列了。ETL的规则是依赖目标数据的,目标数据有多少字段,就有多少条规则。
1、直接映射,原来是什么就是什么,原封不动照搬过来,对这样的规则,如果数据源字段和目标字段长度或精度不符,需要特别注意看是否真的可以直接映射还是需要做一些简单运算;
2、字段运算,数据源的一个或多个字段进行数学运算得到的目标字段,这种规则一般对数值型字段而言;
3、参照转换,在转换中通常要用数据源的一个或多个字段作为Key。
4.4. ETL 中数据质量
“不要绝对的数据准确,但要知道为什么不准确。”这是我们在构建BI系统是对数据准确性的要求。确实,对绝对的数据准确谁也没有把握,不仅是系统集成商,包括客户也是无法确定。准确的东西需要一个标准,但首先要保证这个标准是准确的,至少现在还没有这样一个标准。客户会提出一个相对标准,例如将你的OLAP数据结果和报表结果对比。虽然这是一种不太公平的比较,你也只好认了吧。
首先在数据源那里,已经很难保证数据质量了,这一点也是事实。在这一层有哪些可能原因导致数据质量问题?可以分为下面几类:
1、数据格式错误,例如缺失数据、数据值超出范围或是数据格式非法等。要知道对于同样处理大数据量的数据源系统,他们通常会舍弃一些数据库自身的检查机制,例如字段约束等。他们尽可能将数据检查在入库前保证,但是这一点是很难确保的。这类情况诸如身份证号码、手机号、非日期类型的日期字段等。
2、数据一致性,同样,数据源系统为了性能的考虑,会在一定程度上舍弃外键约束,这通常会导致数据不一致。例如在帐务表中会出现一个用户表中没有的用户ID,在例如有些代码在代码表中找不到等。
3、业务逻辑的合理性,这一点很难说对与错。通常,数据源系统的设计并不是非常严谨,例如让用户开户日期晚于用户销户日期都是有可能发生的,一个用户表中存在多个用户ID也是有可能发生的。对这种情况,有什么办法吗?

2010/8/25 21:45

gipsky 于 2010年08月25日 22:10:47
gipsky 于 2010年08月25日 22:50:47
应用扩展 工具箱


[转帖]ISO38500是什么?
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
注册会员
帖子: 56
等级: 6; EXP: 34
HP : 0 / 133
MP : 18 / 19466
离线
IT治理国际标准ISO38500:2008介绍
ISO 38500:2008 是IT 治理国际标准,2008年6月发布,标志着国际上普遍认可信息化迈入IT 治理时代。这个标准与其他相关标准如ISO20000, ISO27001一样,都是简短的易读的,但是真要实施会发现相关概念十分复杂难解。实施它的好处在于可以更好的将组织目标和决策与IT的目标和决策更加紧密联系起来。
一、标准概览
1、名称
ISO/IEC 38500:2008 corporate governance of information technology -公司IT治理- (以下称IT治理),主要衍生于澳大利亚标准AS8015。

2、发行者
ISO?(国际标准化组织)?和?IEC(国际电工委员会)?是世界范围的标准化组织。各国的相关标准化组织都是其成员,并通过各种技术委员会参与相关标准的制定。其他国际组织,政府机构及非政府机构也协同工作。国际标准的草案,须能得到所有会员75%以上的赞成票,该标准才可被公布为国际标准。在信息技术领域,?ISO和IEC成立了一个联合技术委员会ISO/IEC JTC 1。该委员会以澳大利亚标准AS8015为蓝本,并结合AS 8000:2003 ? 良好的治理原则和AS 3806:2006 ? 合规性程序,制定了IT治理的国际标准ISO/IEC 38500:2008。
3、标准发布的目标
确保利益相关者对于组织IT治理的信心
指导管理者治理组织的IT使用
为IT治理的目标评估提供了基础
4、目标读者
高级管理者
组织中的资源监控团队成员
外部的业务或技术专家,包括法律或财务专家、行业协会及专业团体
硬件、软件、通讯及其他IT产品的厂商
内部或外部的服务提供者(包括咨询顾问)
IT审计师
5、适用范围
ISO/IEC 38500:2008可以用于任何规模的组织,包括公/私有性质的公司,政府机构以及非营利组织。这一标准提供了一个IT治理的框架,以协助组织高层管理者理解并履行他们对于其组织IT使用的既定职责,实现IT治理的有效性、可用性及效率。
6、认证
相关的认证(对个人和组织)正在研究中。
二、ISO38500主要内容
1、 主要内容:
范围、应用与目标
良好的IT治理框架
IT治理指南
2、 指导准则:
职责分工
IT支持组织发展
可获得性
可用性
合规性
尊重人性因素(以人为本)
准则一:职责分工
对分配职责进行评价
确保能够胜任所分配的职责
监控所分配职责的实施
为IT分配职责的方式取决于组织所使用的业务模式和组织架构。例如:有些设备需要内部管理;建议来自于外部的咨询顾问;还有一些IT来源于厂商与专业服务提供商。
准则二:IT支持组织发展
考虑机遇使IT更好的服务于业务发展
分配其当下的活动
指导计划的实施与发展以弥补差距
近几年来,IT相关设备的发展日新月异,逐渐向小型化、低廉化发展。互联网制定的一系列标准使得不同厂商的设备兼容性与内部可操作性越来越强。这提高了各厂商之间的竞争,也为更广阔的市场创造了新的业务机遇。与此同时,业务实践也有了发展。早期的措施现在往往会导致浪费,极少业务利润,还影响新市场的开拓。预期客户采用新系统的实践越来越长,例如:联网银行间AMT的切换不能瞬间完成。
准则三:可获得性
这一准则覆盖了风险与价值的规划分配和近期的IT投资。管理者需要履行政策与程序来确保投资的安全性。投资案例中的资源分配必须确保以及时的形式重新分配。
准则四:可用性
IT实施包括信息整合、系统能力,它还拓展了退出与处理,以确保组织的环境和数据管理职责得以履行。
准则五:合规性
这一准则覆盖了所有的内部政策,包括:技术使用(包括:电子邮件与搜索引擎)、职责履行(记录保持、财务报表、关于组织与业务持续性隐私信息的保护)
准则六:尊重人性因素
其中IT的人性因素包括:
用户界面的可用性与友好性
人们受到IT所带来的业务流程改变的影响的需求
由于IT会直接而迅速的影响组织的实施,管理者应当像管理其财务与人力资源那样,指挥、评价与监控其组织的IT应用。
三、治理机制
关于IT,管理者有三项主要活动,即:指导、评价与监控。有效地IT治理应当是可实施的、具有一致性的。DEM模型聚焦于更广泛层次上的IT治理,它略微不同于管理者典型使用的PDCA模型。在这一模型中,管理者依据业务压力与业务需求来监控(Monitor)并评价(Evaluate)组织的IT使用,而后指导(Direct)实施政策方针以弥补差距。

2010/6/18 23:28
应用扩展 工具箱



(1) 2 3 4 ... 169 »





系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号