`
bbls
  • 浏览: 63260 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

WWW服务器讲解

    博客分类:
  • JAVA
阅读更多

HTTP 1.1 协议

当欧洲高等物理实验室开发出网页服务器时,当时是使用 HTTP 1.0 版通讯协议,市场上支持得最好的浏览器大概就是 Netscape Navigator及Communicator,Netscape 公司在产品成熟后紧接着推出 Gold 版开始收费贩卖,在 Gold 版中他们提出了线上编辑网页的概念(编好后要用 FTP 上传就是了),为了实现这个概念必须要发展新的 HTTP 通讯协议,当然没多久 Netscape 从市场消失,大家开始改用微软公司的 IE 以及 FrontPage,微软公司基于简单易用的考量, 积极参与新版本 HTTP 通讯协议的制定,这就是后来我们看到的 HTTP 1.1。

HTTP 1.1 版通讯协议的改版幅度相当大,例如:增加档案 zip 压缩功能,增加 MD5 编密传送功能......等等,其中对微软公司最重要的就是,他们提案的 PUT 和 DELETE 指令被接受了,PUT 指令用来新增网页、修改网页内容或变更文件名,DELETE 指令则用来删除网页或目录,透过这个机制就可以很容易用 HTTP 80 端口来直接更新网站内容,这就是微软产品 FrontPage Server Extension 的目标,目前除了 FrontPage 支持 PUT、DELETE 指令外,还有 W3C 开发的 Winie 也可以用来上传网页(支持 Linux 平台,Server 端则由 Apache mod_put 负责)。底下简要的说明 HTTP 1.1 版各个指令的用途:

指令 用途

OPTIONS 查询或设定 URI 旗号,透过这个机制服务器得以和浏览器协商传输资料时要不要压缩、要不要 Cache ......等等

GET 取得网页资料。必须使用绝对网址来要求资料,如果使用相对路径,则必须以 Host: 标头标示目的网址,这跟 1.0 版有很大的不同

HEAD 跟 GET 很像,但只会取得网页标头,不包含网页内文(除错用)

POST 取得网页资料前,先上传前一个网页的窗体资料,POST 和 GET 的差别在于上传资料的方式不同,使用 GET 可以在网址后方添加信息(?user=xxps&test=on......),但信息的量无法超过一行的限制,使用 POST 上传没有上限。POST 除了用来上传窗体资料(上传档案)外,还可以:

为 Server 上的资料来源建立批注

提供资料给窗体中的动态数据链路项目(DataField)

新增资料到数据库(通常是另一个网页或纯文字数据库)

在 FrontPage 上可以制作这种进阶窗体,在此不作详细说明

PUT 当 PUT 指定的网页不存在时,会自动新增网页,否则就是要取代旧网页或变更名称

DELETE 删除指定的网页或空目录

TRACE 用来做应用层的 loopback 追踪,可以配合 OPTIONS 指定 Max-Forwards 来决定追踪的深度,使用此指令将追踪出所经过的 Proxy(除错用)

CONNECT 是给 Proxy 服务器用来建立 SSL 信道的,当浏览器透过 Proxy 使用 HTTPS 连上网页时,需要在 Proxy 上建立 SSL 信道才能提供服务给 Client 端

了解 HTTP 响应状态码的涵义(RFC 2068),对于理解 Apache 服务器的行为和运作机制有很大的帮助,同时当网页出现状况无法正常显示时,浏览器也会秀出这些错误讯息,了解这些错误讯息您就可以判断出问题的成因,因此在本文特地收录了一般常见的各种状态码的表列,当作补充教材请学员细心阅读。

 

新版 Apache 的特色

RedHat 9.0 版随附的 Apache 服务器是 2.0 版,相较于过去推出的 1.3 版有非常大幅度的改变,2.0 版的 Apache 不但支持多重处理器系统、支持 ipv6,也重新改写了函式库。新版 Apache 内的模块全部使用新的函式库来编译,使得所有模块都能支持 DSO 动态加载。(DSO 不算是新东西,过去一直不是 Apache 预设的做法,在前版 Apache 上想要使用 DSO 必须自己重新编译 Apache)。除此之外,新版 Apache 也支持一种称为过滤器(Filter)的全新模块,过去使用的旧模块则被称为掌舵者(Handler)模块。

说到 filter 我想经常使用 Linux 指令的人一定不陌生,当一次使用多个 shell 指令时,我们会使用管道符号来串接指令,而在 Linux 上管道符号就被称为 filter 符号,这意味着,这些模块可以像 shell 指令一样串接在一起,例如:ls | grep a | less,透过多个程序接力运作最后可以得出比较复杂有弹性的结果。过去使用的 Handler 模块,在处理完程序网页的内容后,会直接将处理结果推送回浏览器端;而 Filter 模块则在处理完后,将处理结果送回给 Apache core module,以便交给其它 Filter 模块进行后续处理。

事实上这个新的转变在 Microsoft IIS 上已经行之多年,它能带来最大的好处,就是网页服务器将有能力去处理混用多种 script 语言所设计出来的复杂网页,这在过去被认为用途不大,但随着 Web Computing 的风行,这已经成为不得不然的趋势,事实上 Apache 这样的转变,将有助于吸纳原来 IIS 及 JAVA 服务器的使用者,因为使用 ASP 或 JSP 的网页在 Apache 上执行已经不再只是梦想。

除了这些重大的改变以外,2.0 版在组态设定上有一些改变,这个改变是好是坏就见仁见智了,笔者认为预设的组态对于中文世界的使用者特别是中小学来说是相当不友善的,必须要经过蛮多修改才能使用,与过去 1.3 版相比改变还真大!下面就来说明组态档中新旧版本不同的地方:

conf.d

新版的 Apache 将各种模块会用到的组态档集中摆放在 /etc/httpd/conf.d 资料中,例如:mod_perl、mod_ssl、mod_php......等,因此在组态档中有这一行:

Include conf.d/*.conf

如果您的 Apache 是从旧版升级上来的,记得把这一行加到原来的组态档中。

IP 与端口号绑定

旧版 Apache 是使用 BindAddress 和 Port 来指定服务器提供服务的位置,新版的 Apache 则是使用 Listen 来宣告要倾听的端口,使用 ServerName 指定端口的方式来宣告是由哪个 DN 来提供该服务,好处是一台 Web 将可以同时服务多个 Port,甚至可以利用端口的不同来设计虚拟站台(过去有所谓 IP base、name base 虚拟站台,现在又多了 Port base,有关虚拟站台在后面章节说明),例如:

1.3 版 2.0 版

BindAddress 192.168. 1.2

Port 12000

ServerName wam.spps.tp.edu.tw Listen 12000

ServerName wam.spps.tp.edu.tw:12000

Multi-Processing Modules(MPMs)

MPMs 是一群特殊的模块,和其它模块不同它们是无法动态加载的(DSO), 它们必须在安装 Apache 时就决定要用哪一个,目前 MPMs 有三种 ,分别是:prefork、worker 和 perchild。像过去 1.3 版那样在 Apache 激活时,即预先将要提供服务的 StartServers 一并 fork 好,这种做法就称为 prefork,其它两种作业模式 RedHat 8.0 尚未提供,必须等新的 rpm 出来后才能安装使用。

三个模块分别采用不同的内存管理方式,其中 perchild 使用一个进程来提供服务,prefork 使用子程序来提供服务,而 worker 则兼用两种方法,它们的差异在于:执行绪可共享内存,并使用内存与其它进程沟通;子程序则独立使用内存,且利用档案与其它子程序沟通。前者效能较高,后者比较安全稳定。

三个模块被设计用来应付不同的效能需求,小型实验网站使用 perchild,它会同时激活 5 个 Server,每个 Server 最多执行 10 个进程,因此可同时应付 50 条联机,假设有开启 KeepAlive 功能,则最多可同时服务 5000 个要求,相当于 IIS 中的 1000 人以下存取量(在 IIS 中也可以进行效能调整,两者相互对照比较容易理解 MPMs 机制),预设的 prefork 是提供给中量级网站使用,最多可同时接受 3000 条联机,服务 30000 个要求,重量级网站则使用 worker,最多可同时接受 22500 条联机,约可服务 20 万个要求。

直接受此改变影响的包含:StartServers、MinSpraeServers、MaxSpareServers、MaxClients、MaxRequestsPerChild、NumServers、StartThreads、MinSpareThreads、MaxSpareThreads、MaxThreadsPerChild....等 ,默认值如下:

Server-Pool Size Regulation

Dynamic Shared Object(DSO)

新版 Apache 已经全面采用 DSO,过去 DSO 是编译 Apache 的选项之一,由于一直未被各版本 Linux 支持,因此如果想要使用必须自行下载原始文件编译,Apache 模块全面改写应该与全面采用 DSO 有很密切的关连。如前所述,由于 Apache 模块改以过滤器的方式运作,因此有许多模块被合并、分割、移除或改名,模块之间串接的顺序也变得更为重要,因此 Apache 允许模块可以指定自己的顺序,过去于组态档中提供的 AddModule 和 ClearModuleList 已经被取消不再使用,LoadModule 指令的顺序也被忽略。安装 mod_perl、mod_ssl、mod_php......等 RPM,也不用再去新增 LoadModule 设定,因为它们会自动被加载。另外,过去用来侦测哪些模块被加载的 HAVE_XXX 宏命令,也不再使用了,因为现在的模块是动态加载的。
<!-- 正文end -->

个人网页目录

中小学架设 Apache 主要是为了提供师生个人网页空间,可惜新版 Apache 预设将此功能关闭,必须手动自行修改才能启用:

UserDir disable改为 UserDir public_html(或其它想使用的名称)

预设语言与字符集

新版Apache装好后预设会使用荷兰语系和西欧字符集,这样就造成网页看到乱码,过去旧版本使用哪种语系是由浏览器来决定,新版改为由 Apache 和浏览器来协商,因此就算设计网页时有指定 Big-5 字符集,但浏览器却接受 Apache 的指派,而不再理会网页内容本身的设定,这对我们会造成很大的困扰,因此安装完 Apache,一定要记得改底下这些选项:

DefaultLanguage tw

............................(中间省略)........................

LanguagePriority tw en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv

............................(中间省略)........................

AddDefaultCharset Big5

如果这些都改好后仍然出现乱码,请检查 IE 网际网络选项中的进阶设定,是否有开启 UTF-8 功能,目前发现某些情形下使用该功能会导致网页乱码,将它移除后就正常了。

常用组态设定

分类 组态名称 默认值 使用说明

基本设定 ServerRoot /etc/httpd Apache 主程序所在目录,这是不需要修改的。

Timeout 300 用来设定联机等待时间,包含:联机完成后,浏览器应于多少时间内送出 GET 指令、浏览器送出 POST 或 PUT 指令后,应于多少时间内送出网页或窗体资料、服务器响应网页资料后,浏览器应于多少时间内回复收到。这个设定是以秒作为单位。

KeepAlive off 是否允许同一联机送出多个要求,通常一个要求会起始一条联机,这样虽会耗用较多的系统资源,但是响应比较迅速,当联机数太多系统资源不足时,可以考虑使用此功能。

MaxKeepAliveRequests 100 设定每条联机最多可接受多少要求,设得越高重启联机的机率就越低,对改善 KeepAlive 的效能很有帮助。

KeepAliveTimeout 15 当一条联机服务完一个要求后,会等待一段时间以便接受下一个要求,如果逾时就关闭联机,这个设定值与前面介绍的 Timeout 意义完全不同,可千万别搞混了。

Listen 80 和旧版的 Port 不同,它允许一个服务器可以同时倾听多个通讯端口,当端口号被设定少于 1024 的情形下,可以允许一般使用者将 Apache 安装在个人家目录下,成为个人专属服务器,像这种站台地下化的情形,系管人员应该要留意追查。

User apache 预设激活帐号,事实上 Apache 激活时还是以 root 身分进行准备工作,直到接受服务时才改用此帐号。为了安全考量,公开的 WEB 服务不应使用 root 身分来提供服务。

Group apache 预设激活群组。

ServerAdmin 无 请务必修改为该服务器的实际负责人信箱。

ServerName 无 用来提供服务的网址及端口,当省略不设定时,预设会使用 hostname 及 80 port。

HostnameLookups off 要不要对联机的客户端进行 DNS 查询验证,这是为了避免骇客用假 IP 攻击主机,但进行 DNS 查询会降低服务器效能,特别是当网站非常受欢迎的情况下,问题将会很严重

DefaultLanguage nl 预设语系

LanguagePriority 略 协商语系时的优先级

AddDefaultCharset iso-8859 预设字符集

AddType 略 用来新增 MIME 格式,当 Apache 将档案传输给 Client 时,必须告知 Client 该档案属于何种格式,这样浏览器才能正确显示或播放该档案,常用的格式都已预先设好,因此除非要作特殊应用否则不需设定(有些站台故意隐藏正确的附加档名,来限制某些档案的下载)

AddHandler 略 定义 Apache Handler 模块所对应的附加文件名,当附加档名吻合时,会交由该模块处理。目前支持的 Handler 模块,主要有 cgi-script(perl)、imap-file(imagemap)、type-map(多语系)......等,这些设定都不需修改。(有些书教大家在 AddHandler cgi-script .cgi 的后面加上 .pl,这是多余的,因为按照 perl 的惯例 .pl 档案会被引入到 .cgi 中,本身并不会单独执行,因此这样设是多余的)

AddOutputFilter 略 属于新版 Apache 支持的 Filter 模块,应该使用 AddOutputFilter 而非 AddHandler,例如过去属于 Handler 模块的 SSI,现在已经变成 Filter 模块,因此设定由

AddHandler server-parsed .shtml

改成

AddOutputFilter INCLUDES .shtml

AddPathInfo on 这个选项用来让 Filter 和 core 模块在传送剖析过的网页数据时,能使用 PATH_INFO 环境变量来传递 basedir,以免相对路径无法对应正确

特异功能 Action 略 这个功能的设计相信是绝大多数网站经营者的福音,它允许为某种 MIME 类型或某个 Handler 设定前导执行程序,透过这个功能将可以为站台中的每个档案进行权限检查和过滤,以防堵不肖业者砍站的行径,以前使用者从后门偷档的情形也将受到遏止,设定方式如下:

Action media/type /cgi-script/location

Action handler-name /cgi-script/location

网页目录设定 DocumentRoot /var/www/html 根网站的主目录

UserDir public_html 个人网页的主目录,建议改成 www 比较容易被学生接受

DirectoryIndex index.html 设定首页的名称,为了配合 FrontPage 教学,请修改成 index.html index.htm default.htm default.html

AccessFileName .htaccess .htaccess 是用来做目录存取控制的,如果您修改了它的档名,不要忘记一并修改底下的设定:



Order allow,deny

allow from all

分享到:
评论

相关推荐

    www服务器的配置总结讲解教程.rar

    本教程主要聚焦于www服务器的配置,旨在帮助IT从业者或爱好者深入理解服务器配置的基本概念和操作步骤。通过学习这个教程,你将能够掌握如何设置和管理一个高效的Web服务器。 首先,我们要了解Web服务器的基本架构...

    WEB服务器搭建从基础讲解到中等

    【WEB服务器搭建基础到中等】讲解 在深入学习WEB服务器搭建的过程中,首先需要了解的是Web服务器的基本概念。Web服务器是一种通过Web向客户端提供内容的网络服务,它使用超文本传输协议(HTTP)来传输数据。Apache ...

    CenTOS服务器配置综合练习题

    * 访问Web服务器:使用浏览器访问www.abc.com,查看网页是否显示正确。 四、总结 * 本练习题涵盖了服务器配置、DNS服务器搭建、Web服务器搭建等多方面的知识点。 * 通过本练习题,学习者可以掌握服务器配置、DNS...

    WWW和FTP服务器的安装和配置

    本文将详细讲解这两个服务器的安装与配置,以及如何管理和监控它们的运行状态。 1. **WEB服务器的安装**:安装WEB服务器通常指的是安装HTTP服务器,如Apache、Nginx或IIS等。Apache是最常见的开源选择,对于Linux...

    讲解1521抓服务器的配置方法

    废话就不多说了 介绍下 这是我朋友的站 http://www.007kl.cn/ 大家可以去看看 下面就不打字 听语音 Toshiba 1521.bat 主程序 ActivePerl-5.8.8.822-MSWin32-x86-280952.msi 安装这两个文件 ora10client.exe ...

    Linux服务器配置与管理:DHCP服务器安装配置.pptx

    本教程将详细讲解如何在Linux环境中安装和配置DHCP服务器,同时培养学生的专业素养和工匠精神。 1. 获取DHCP软件包 在RHEL7.3系统中,DHCP服务器的安装软件包包括三个主要部分: - dhcp-4.2.5-47.el7.x86_64.rpm:...

    Windows搭建服务器压缩包

    这里我们将详细讲解如何利用这个压缩包以及其中的关键组件——“酷源码(www.kyuanma.com)ASP调试工具.exe”来实现这一目标。 首先,了解Web服务器的基本概念是必要的。Web服务器是一种软件,它接收HTTP(超文本传输...

    windows server 2003 服务器搭建

    在本文中,我们将详细介绍如何搭建基于 Windows Server 2003 操作系统的网络服务器,并讲解每种服务器的配置和优化。 一、WWW 服务器搭建 WWW 服务器是指提供 Web 服务的服务器,可以存储和提供网页、图片、视频等...

    web 服务器C++代码

    本文将深入探讨一个基于C++实现的Web服务器,并着重讲解其核心概念和技术细节。 首先,我们要了解C++语言在构建Web服务器中的作用。C++是一种强大的系统级编程语言,因其高效、灵活和对底层硬件的直接控制能力,常...

    unity通过http上传图片到服务器

    本文将详细讲解如何在Unity中利用HTTP请求上传图片到服务器,这里以Tomcat服务器为例。 首先,Unity提供了UnityWebRequest(UWR)类来处理HTTP请求,它是Unity 5.5版本后引入的,用于替换过时的WWW类。UWR支持异步...

    使用webmin 配置服务器

    - **地址记录**:在主服务器的区域内,添加A记录(如www与IP地址关联)、CNAME记录(别名)、MX记录(邮件服务器)和NS记录(辅助域名服务器)。 4. **创建从服务器**:在"现有区域"中选择"新建次区域",输入从...

    简单过路由轻松搭建web服务器.

    简单过路由轻松搭建 web 服务器 一、前期的准备工作 * 上网方式介绍:使用 ADSL+ ...* 本文讲解了从上网方式到配置 WEB/FTP 服务器的所有步骤 * 通过 IIS,可以轻松搭建 WEB/FTP 服务器,并提供 WEB 和 FTP 服务

    基于http的代理服务器

    【标题】"基于HTTP的代理服务器"涉及到网络通信和服务器技术,主要讲解如何通过HTTP协议建立一个代理服务器。HTTP代理服务器作为客户端与目标服务器之间的中介,可以用于访问受限的网站,提升匿名性,或者集中管理...

    玩个人服务器-域名、dns、WEB

    本文将深入探讨“玩个人服务器-域名、DNS、WEB”这一主题,结合“服务器”标签,我们将围绕这三大关键概念进行详细讲解。 首先,让我们谈谈“域名”。域名是互联网上网站的地址,它便于人类记忆,比如...

    CentOS 5 全功能WWW服务器搭建全教程 V3.0

    【压缩包子文件的文件名称列表】:“V3.doc”可能是这个教程的文档文件,包含了上述所有步骤的详细说明和可能的命令行示例,用户可以通过阅读这份文档来逐步搭建自己的全功能WWW服务器。 总的来说,这份“CentOS 5 ...

    一篇优秀Session讲解

    - **HTTP协议**:HTTP(Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议,主要用于从WWW服务器传输超文本到本地浏览器的传送协议。它是基于TCP/IP通信协议来传递数据的。 - **HTTP协议的状态...

    常用Outlook设置方法+常用邮件服务器地址归纳.pdf

    4.点下一步,在 1、2 处分别输入邮件服务器地址,例如:中国地质大学(北京)www.cugb.edu.cn 的邮箱服务器设置是 POP3 服务器(P):mail.cugb.edu.cn;SMTP 服务器(S):mail.cugb.edu.cn。 5.点下一步,在 3、4...

    Apache服务器配置图解(WORD)

    本教程将通过图文并茂的方式,详细讲解如何配置Apache服务器,帮助初学者快速搭建WEB服务应用环境。 首先,我们需要确认系统是否已经安装了Web服务器软件包,特别是Apache HTTPD服务。在大多数Linux发行版中,可以...

    13.WWW浏览器和Web服务器.rar

    描述中重复的“VB13.WWW浏览器和Web服务器”提示我们,这个压缩包可能包含多个章节或部分,专门讲解如何使用VB来实现对WWW浏览器和Web服务器的功能操作。VB是一种流行的编程语言,常用于开发桌面应用程序,它可以...

    Debian下svn服务器的安装与配置

    本文将从安装 Subversion 开始,到配置 SVN 服务器的所有步骤进行详细讲解。 安装 Subversion 在 Debian 环境下,安装 Subversion 服务器非常简单。只需运行以下命令: $ sudo apt-get install subversion ...

Global site tag (gtag.js) - Google Analytics