`
bbls
  • 浏览: 61537 次
  • 性别: 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服务器的配置总结讲解教程,感兴趣的可以下载看看

    WWW服务器配置与管理

    主要讲解WWW服务器的配置与管理。通过本章学习,读者应该掌握以下知识:  WWW服务的基本概念工作原理;  安装WWW服务器; 配置与管理WWW服务器;

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

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

    第8章 WWW服务器配置与管理.ppt

    本章首先介绍了WWW服务的工作原理,讲解了使用Windows 2000 Server及IIS5.0配置WWW服务器方法,以及配置、维护Web站点的方法。

    邮件服务器配置教程

    搭建邮件服务器教程 ...邮件服务器采用win7,邮件软件采用hMailServer,该软件免费。 在https://www.hmailserver.com/download...采用默认安装即可。... 接下来,搭建一个邮件服务器,采用内外完成 192.168.1....视频讲解完毕。

    中南大学网络工程实验-服务器搭建实验原创40页超详细手册-之WWW篇

    中南大学网络工程实验的服务器搭建实验手册,特别聚焦于WWW...安全性是服务器搭建中不可忽视的重要方面,手册通过详细讲解防火墙配置、HTTPS的设置等内容,帮助学生建立起对服务器安全性的高度警觉,培养安全意识。

    完成端口IOCP实现高并发服务器——一篇非常好的学习资源

    IOCP 实现高并发服务器demo+详解 转载自https://www.cnblogs.com/talenth/p/7068392.html

    人工智能-项目实践-html-嵌入式web服务器BOA+CGI+HTML+MySQL项目实战-Linux.zip

    具体功能讲解 1、运行BOA服务器 (来到BOA目录下的src,终端输入 sudo ./boa 启动服务) 2、打开浏览器,输入localhost:端口号/login.html (文件都要放在 /var/www 目录下) 3、登录页面,注册页面。(登录注册...

    FTP服务器的架设.txt

    IIS的安装前面已经讲解过,下面我们一起来看看通过设置IIS来架设FTP服务器的几个步骤。 第一步:启动IIS,并启动IIS上的FTP服务。在默认的情况下,此时你的FTP服务器已经搭建好,并且可以立即登录,但是该FTP中没有...

    组建域模式局域网讲解.doc

    一、准备工作 1、规划服务器的IP、域名 "角色 "IP "域名 " "域控制器 "192.168.1.11 "wonder.edu.cn " "DNS服务器 "192.168.1.11 "wonder.edu.cn " "Web服务器 "192.168.1.12 "www.wonder.edu.cn " "FTP服务器 "192...

    P13_Blazor项目模板讲解ThreeBlazor2020_1_11.rar

    P13_Blazor项目模板讲解ThreeBlazor2020_1_11.rar Blazor与Flex和silverlight有点像,Flex和silverlight有一些大厂反对,不支持flex和silverlight Blazor使用Web Assembly标准,Web Assembly是一种...

    Spring Boot Socket实现与html页面的连接,案例讲解客户端与服务器端相互发消息.docx

    &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...

    網絡操作系統.ppt

    比较精要的讲解网络操作系统配置与管理,内容大致如下1第1章 网络操作系统概述2第2章 规划与安装3第3章 环境设置4第4章 磁盘管理5第5章 文件系统管理6第6章 活动目录7第7章 DNS服务器配置与管理8第8章 WWW服务器配置...

    V512工作室Java web的ppt

    第2章 介绍Servlet技术的发展起源,还介绍了Web编程中需要了解的其他相关技术,例如Internet、WWW、浏览器和Web服务器等内容。 第3章 讲解Servlet编程的基本步骤、Servlet的生命周期、以及如何使用Eclipse和...

    Linux Apache Web 服务器(续一)

    在具体讲解之前,我们必须告诉大家,Apache已经在安装时就采用了一系列的缺省值,已经让WWW服务器跑起来了。你只需要将装上Linux+Apache的主机联入Internet,然后将主页存放到“/home/httpd”目录下即可。  下面...

    Nginx服务器下配置个性二级域名及多个域名的实例讲解

    我们的做法就是通过服务器配置,将访问的url转换为实际的url 下面我们来用nginx配置。配置如下: server { listen 80; server_name *.jb51.net; if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) { set $subdomain $...

    Vue-CLI 3.X 部署项目至生产服务器的方法

    本教程主要讲解的是 Vue-CLI 3.x 脚手架搭建的vue项目, 先构建生成dist文件(纯静态应用), 然后自动化部署到静态文件服务器 Nginx。 一、Nginx服务器文件的配置 server { listen 80; server_name www.xxxxxx.com;#...

    计算机网络课程设计、计算机网络期末大作业、网络拓扑结构设计

    8.外网服务器可作为DNS服务器,并提供 www.cjlu.edu.cn网站访问服务, 9.互联网连接的线路使用安全的专线连接,利用OSPF路由协议连通; (压缩包包含网络结构拓扑图设计、计网大作业实验报告、网络课程设计PPT讲解)

    VBScript介绍手册

    6.4 WWW服务器的建设管理 6.4.1 创建新的Web站点 6.4.2 配置Web站点 6.4.3 配置主目录 6.4.4 配置虚拟目录 6.4.5 设置主页文件 6.4.6 目录安全设置 6.4.7 Web站点负载的多台IIS服务器分布 6.4.8 单站点服务器配置多...

    aidl.rar_RemoteCallbackList_site:www.pudn.com

    这里主要讲解一下服务器端回调客户端的步骤: 1、写一个ITaskCallback.aidl文件,该文件中定义了一些需要服务器端调用的函数接口 2、写一个IMyService.aidl文件,里面加两个接口用于注册和取消ITaskCallback.aidl...

Global site tag (gtag.js) - Google Analytics