服务器的一些名词解释

CGI

百科名片
作为一个英文缩写,该名词有不同含义,包括“通用网关界面”、“计算机 合成图像/电脑 三维动画”、“计算机图形接口标准”、“全球小区识别码”等。

编辑本段简介

作为一个英文缩写,该名词有多种含义:
CGI (Common Gateway Interface)  通用网关接口
CGI(Computer Generation Image)计算机 合成图像/电脑 三维动画
CGI(Computer Graphics Interface) 计算机图形接口标准

CGI说明图片

CGI说明图片 (9张)
CGI(Cell Global Identifier) 全球小区识别码
CGI(Compacted Graphite Iron)缩状石墨铸铁
CGI(Clinton Global Initiative) 克林顿全球倡议
CGI (Clinical Global Impression)临床疗效总评量表
公共网关接口CGI(Common GatewayInterface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部 应用程序(CGI程序)与Web 服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web 服务器执行外部 程序,并将它们的输出发送给Web 浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

编辑本段通用接口

Common Gateway Interface,简称CGI。在物理上是一段 程序,运行在 服务器上,提供同 客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子:现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在 客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端), 浏览器把这些信息传送到 服务器的CGI目录下特定的cgi 程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi 程序客户端发送一个信息,表示请求的任务已经结束。此时用户在 浏览器里将看到“留言结束”的字样。整个过程结束。

功能

绝大多数的CGI 程序被用来解释处理来自 表单的输入信息,并在 服务器产生相应的处理,或将相应的信息反馈给 浏览器。CGI 程序使网页具有交互功能。

运行环境

CGI 程序最初在UNIX 操作系统上CERN或NCSA格式的 服务器上运行。
在其它 操作系统(如:Windows NT及Windows 95等)的 服务器上也广泛地使用CGI 程序,同时它也适用于各种类型机器。

处理步骤

⑴通过Internet把用户请求送到 服务器
服务器接收用户请求并交给CGI 程序处理。
⑶CGI 程序把处理结果传送给 服务器
服务器把结果送回到用户。

服务器配置

CGI 程序不是放在 服务器上就能顺利运行,如果要想使其在服务器上顺利的运行并准确的处理用户的请求,则须对所使用的服务器进行必要的设置。
配置:根据所使用的 服务器类型以及它的设置把CGI 程序放在某一特定的目录中或使其带有特定的扩展名。
⑴CREN格式 服务器的配置:
编辑CREN格式 服务器的配置文件(通常为/etc/httpd.conf)在文件中加入:Exec cgi-bin/*/home/www/cgi-bin/*.exec。命令中出现的第一个参数cgi-bin/*指出了在URL中出现的目录名字,并表示它出现在 系统主机后的第一个目录中,如:http://edgar.stern.nyn.***/cgi-bin/。命令中的第二个参数表示CGI 程序目录放在系统中的真实路径。
CGI目录除了可以跟网络文件放在同一目录中,也可以放在系统的其它目录中,但必须保证在你的系统中也具有同样的目录。在对 服务器完成设置后,须重新启动服务器(除非HTTP服务器是用inetd启动的)。
⑵NCSA格式 服务器的配置
在NCSA格式 服务器上有两种方法进行设置:
①在srm.conf文件(通常在conf目录下)中加入:Script Alias/cgi-bin/cgi-bin/。Script Alias命令指出某一目录下的文件是可执行 程序,且这个命令是用来执行这些程序的;此命令的两个参数与CERN格式 服务器中的Exec命令的参数的含意一样。
②在srm.conf文件加入:Add type application/x-httpd-cgi.cgi。此命令表示在 服务器上增加了一种新的 文件类型,其后第一个参数为CGI 程序的MIME类型,第二个参数是文件的扩展名,表示以这一扩展名为扩展名的文件是CGI程序。
在用上述方法之一设置 服务器后,都得重新启动服务器(除非HTTP服务器是用inetd启动的)。

编写语言

CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和 环境变量。对初学者来说,最好选用易于归档和能有效表示大量 数据结构的语言,例如UNIX环境中:
· Perl (Practical Extraction and Report Language)
· Bourne Shell或者Tcl (Tool Command Language)
· PHP(Hypertext Preprocessor))
由于C语言有较强的平台无关性,所以也是编写CGI 程序的首选。
Windows环境中:
· C和C++
由于Internet上大部分 服务器使用的是UNIX 操作系统,且几乎任一UNIX操作系统中都有Bourne Shell,因而后面讲述的例子中大部分是用Bourne Shell编写的。
最终Perl由于其跨 操作系统、易于修改的特性成为了CGI的主流编写语言,以至于一般的“cgi 程序”就是Perl程序。

环境变量列表

SERVER_NAME:运行CGI序为机器名或IP地址。
SERVER_INTERFACE:WWW 服务器的类型,如:CERN型或NCSA型。
SERVER_PROTOCOL:通信协议,应当是HTTP/1.0。
SERVER_PORT:TCP端口,一般说来web端口是80。
HTTP_ACCEPT:HTTP定义的 浏览器能够接受的 数据类型
HTTP_REFERER:发送 表单的文件URL。(并非所有的 浏览器都传送这一 变量
HTTP_USER-AGENT:发送 表单浏览器的有关信息。
GETWAY_INTERFACE:CGI 程序的版本,在UNIX下为 CGI/1.1。
PATH_TRANSLATED:PATH_INFO中包含的实际路径名。
PATH_INFO: 浏览器用GET方式发送数据时的附加路径。
SCRIPT_NAME:CGI 程序的路径名。
QUERY_STRING: 表单输入的数据,URL中问号后的内容。
REMOTE_HOST:发送 程序主机名,不能确定该值。
REMOTE_ADDR:发送 程序的机器的IP地址。
REMOTE_USER:发送 程序的人名。
CONTENT_TYPE:POST发送,一般为application/xwww-form-urlencoded。
CONTENT_LENGTH:POST方法输入的数据的字节数。

优点

CGI可以为我们提供许多HTML无法做到的功能。比如 a.一个记数器 b.顾客信息表格的提交以及统计 c.搜索 程序 d.WEB 数据库,用Html是没有办法记住客户的任何信息的,就算用户愿意让你知道。用Html也是无法把信息记录到某一个特定文件里的。要把 客户端的信息记录在 服务器的硬盘上,就要用到CGI。这是CGI最重要的作用,它补充了Html的不足。是的,仅仅是补充,不是替代。
使在 网络服务器下运行外部分 应用程序(或 网关)成为可能。CGI-BIN 目录是存放CGI 脚本的地方。这些 脚本使WWW 服务器浏览器能运行外部 程序,而无需启动另一个原因 程序
它是运行在Web 服务器上的一个 程序,并由来自于浏览者的输入触发。CGI是在HTTP 服务器下运行外部程序(或 网关)的一个接口,它能让网络用户访问远程系统上的使用类型程序,就好像他们在实际使用那些远程计算机一样。
CGI能够让浏览者与 服务器进行交互,如果你曾经遇到过在网络上填表或者进行搜索,就很有可能就是用的CGI。
尽管CGI易于使用,但是当大批人同时使用一个CGI 应用程序是会反应较慢, 网络服务器 速度也会受到很大 影响。CGI 应用程序的优点是可以独立运行。
CGI 应用程序可以由大多数的 编程语言编写,如Perl(Practical Extraction and Report Language)、C\C++、Java 和Visual Basic等。不过对于那些没有太多编程经验的 网页制作人来说,实在是一个不小的难题。

应用程序工作原理

1. 浏览器通过 HTML表单超链接请求指上一个CGI 应用程序的URL。
2. 服务器收发到请求。
3. 服务器执行指定所CGI 应用程序
4.CGI 应用程序执行所需要的操作,通常是基于浏览者输入的内容。
5.CGI 应用程序把结果格式化为 网络服务器浏览器能够理解的文档(通常是HTML网页)。
6. 网络服务器把结果返回到 浏览器中。

注意的问题

CGI 应用程序运行在 浏览器可以请求的 服务器系统上,执行时需要使用 服务器CPU时间和内存。如果有成千上万的这种 程序会同时运行,那会对 服务器系统提出极高的要求。你要慎重考虑这个问题,以防止服务器 系统崩溃
不完善的CGI 应用程序可能成为别人非法进人 服务器系统的通道,有可能导致重要的资料被删除或外泄。CGI 应用程序主要的用途有以下几种:
根据浏览者填写的HTML 表单发送定制的答复;
创建可单击的图像缩小图;
创建一个浏览者可以搜索内容的 数据库
提供 服务器数据库的接口,并把结果转换成HTML文档;
制作动态HTML文挡。
如果一个CGI 脚本可以在每台计算机上做同样的事情;编写脚本就会变的很容易。不幸的是,CGI 脚本依赖于 服务器操作系统,因此,对于非UNIX服务器来说,Prl(UNIX下编写脚本的一个常用工具)脚本毫无用处。所以,你必须定制安装你的CGI 脚本
大多数服务器都提供 CGI-BIN目录,但是这还不够。因为你应该拥有自己的CGI-BIN。这样,你就能运行自己的 脚本(而不是让自己的系统去适应已存在于系统上的脚本)。因此,你的提供商应安装CGI-BIN,且能够帮助你编写 脚本

ASP

ASP(Active Server Pages): 活动服务器页面,就是一个 编程环境,在其中,可以混合使用HTML、 脚本语言以及组件来创建服务器端功能强大的Internet 应用程序。如果你以前创建过一个站点,其中混合了HTML、 脚本语言以及组件,你就可以在其中加入ASP 程序代码。通过在HTML页面中加入 脚本命令,你可以创建一个HTML用户界面,并且,还可以通过使用组件包含一些 商业逻辑规则。组件可以被 脚本程序调用,也可以由其他的组件调用。
ASP的工作原理:
当在Web站点中融入ASP功能后,将发生以下事情:
1、用户调出站点内容,默认页面的扩展名是.asp。
2、 浏览器服务器上请求ASP文件。
3、 服务器脚本开始运行ASP。
4、ASP文件按照从上到下的顺序开始处理,执行 脚本命令,执行HTML页面内容。
5、页面信息发送到 浏览器
因为 脚本是在 服务器端运行的,所以Web 服务器完成所有处理后,将标准的HTML页面送往 浏览器。这意味着,ASP只能在可以支持的 服务器上运行。让 脚本驻留在服务器端的另外一个益处是:用户不可能看到原始 脚本程序的代码,用户看到的,仅仅是最终产生的HTML内容。

PHP:Hypertext Preprocessor

PHP 是一种 服务器端的,嵌入HTML的 脚本语言。PHP区别其他像 客户端Javascript的地方是它的代码在 服务器端执行.PHP能做什么?
最低水平,PHP可以做任何其他CGI 程序所能做的事,例如收集表格数据,生成 动态页面内容,或者收发cookies.可能最强大,最有意义的特性是PHP支持大范围的 数据库.书写一个 支持数据库的Web 页面是难以置信的简单。
下面是当前支持的 数据库
Adabas D InterBase Solid
dBase mSQL Sybase
Empress MySQL Velocis
FilePro Oracle Unix dbm
Informix PostgreSQL
PHP通过协议也支持与其他服务的"交谈",像IMAP,SNMP,NNTP,POP3,甚至是 HTTP. 你也可以打开晦涩的 网络接口和其他协议交互。
PHP的简要历史
1994年秋季,Rasmus Lerdorf 开始构思 PHP. 早期的非发行版本被用在他的主页上,以追踪谁在看他的在线简历. 1995年年初第一版本出台,当时PHP只被认为是个人主页开发工具.它由一个非常单纯的只能理解很少数特殊宏的分析引擎和 一些用在主页后端通用的工具组成.如留言簿,计数器和其他一些东西.这个分析器在1995年年中被重写并被命名为 PHP/FI 第二版. FI来自 Rasmus 写的另外一个包,用于解释 html 形式的数据.他结合了个人主页工具 脚本和形式解析器,并加 上mSQL支持.这样就产生 PHP/FI 了. PHP/FI以令人惊奇的步调成长,人们开始把自己的代码贡献给它。
很难给出它的硬统计表,但可以估计在1996年末,整个世界至少有15,000个网站在用PHP/FI.到1997年年中,这个数字已经超过50,000了. 而在此时PHP的发展也发生了变化.由Rasmus自己偏爱的和几个人开发的项目变成一个更有组织的团 体成就.Zeev Suraski和Andi Gutmans重写了解析器.这个新的解析器成为PHP版本3的基础.许多有用的代码从PHP/FI 继承到PHP3,并且很多是完全重写的。
今天(1999年年中)不管是PHP/FI或PHP3与很多商业产品捆绑在一块,例如C2级强度的Web 服务器红帽子Linux. 根据NetCraft提供的数据推断,保守估计全世界应用PHP的网站已超过150,000个.由此看来,它比在因特网上运行Netscape 的旗舰企业服务器的站点还多。

反向代理

百科名片
反向代理(Reverse Proxy)方式是指以 代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的 客户端,此时代理服务器对外就表现为一个服务器。

编辑本段概述

通常的 代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的 主机并不会配置并使用这个 代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个 代理服务器能够代理外部网络上的 主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时 代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向 代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
反向代理方式和 包过滤方式或普通代理方式并无冲突,因此可以在 防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。

编辑本段代理服务器

如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在 防火墙外部设置一个 代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到 代理服务器。实际内容位于内容服务器上,在 防火墙内部受到安全保护。 代理服务器位于 防火墙外部,在客户机看来就像是内容服务器。
当客户机向站点提出请求时,请求将转到 代理服务器。然后, 代理服务器通过 防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给 代理服务器代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 14-1)。如果内容服务器返回错误消息, 代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。
这样, 代理服务器就在 安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为 防火墙通路只允许 代理服务器有权进行访问。
图 14-1 反向 代理服务器就像是真正的内容服务器
可以配置 防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的 代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。
安全反向代理 当 代理服务器与其他机器之间有一个或多个连接使用 安全套接字层(SSL) 协议加密数据时,即会进行安全反向代理。

编辑本段用途

安全反向代理有许多用途:
可以提供从 防火墙外部 代理服务器到防火墙内部安全内容服务器的加密连接。
可以允许客户机安全地连接到 代理服务器,从而有利于安全地传输信息(如信用卡号)。
安全反向代理会造成各安全连接因加密数据所涉及的 系统开销而变慢。但是,由于 SSL 提供了高速缓存机制,所以连接双方可以重复使用先前协商的安全参数,从而大大降低后续连接的 系统开销

编辑本段配置方法

配置安全反向 代理服务器的方法有三种:
Secure client to proxy。如果未经授权的用户很少或根本没有机会访问 代理服务器与内容服务器之间交换的信息,则此方案很有效(参见图 14-2)。
图 14-2 客户机安全连接到 代理服务器
Secure proxy to content server。如果客户机在 防火墙内部而内容服务器在防火墙外部,则此方案很有效。在此方案中, 代理服务器可以充当站点之间的安全通道(参见图 14-3)
图 14-3  代理服务器安全连接到内容服务器
Secure client to proxy and secure proxy to content server。如果需要保护服务器、 代理服务器和客户机三者间所交换信息的安全,则此方案很有效。在此方案中, 代理服务器既可起到站点间安全通道的作用,又可增加客户机验证的安全性(参见图 14-4)。
图 14-4 客户机安全连接到 代理服务器并且代理服务器安全连接到内容服务器
有关如何设置上述每种配置的信息,参见设置反向代理服务器。
除了 SSL 之外, 代理服务器还可以使用客户机验证,这种方法要求向代理服务器提出请求的计算机提供证书(或标识表单)以核实其身份。

编辑本段比较

下面将对几种典型的代理服务作一个简单的比较。在网络上常见的 代理服务器有三种:
1. 标准的代理缓冲服务器
一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即 代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地 代理服务器那里请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明 代理服务器的IP地址和端口号。 客户端上网时,每次都把请求送给 代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给 客户端浏览器。
2. 透明代理缓冲服务器
透明代理缓冲服务和标准 代理服务器的功能完全相同。但是,代理操作对 客户端的浏览器是透明的(即不需指明 代理服务器的IP和端口)。透明 代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果 客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的 代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。
3. 反向代理缓冲服务器
反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向 代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在 代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值