一,Apache的特性 1. Apache1.3的特性
可以运行在几乎所有的计算机平台 支持最新的HTTP1.1协议 支持虚拟主机 支持HTTP认证 集成了代理服务器
具有可定制的服务器日志 支持Socket层(SSL) 用户会话过程的跟踪能力 支持通用网关接口CGI 集成Perl脚本编程语言
支持服务器端包含命令(SSI) 支持FastCGI 支持PHP
支持Java Servlets
支持第三方软件开发疝提供的大量功有模块。 2. Apache 2.0的新特性
新的多处理模块(Multi-Processing Module,MPM),使用此模块会在服务器处理多个请求时,控制Apache的运行方式。Apache中的3种运行方式分别是:
1.预派生(profork)MPM:此模块在功能上兼容于Apache1.3的运行模型。这种运行方式首先启动一个父进程,然后 创建并启动一定(可配置)数量的子进程监听客户的请求。当监听到客户的服务请求后,子进程就响应此请求。重要的是父进程始终监控子进程,当没有足够的空闲子进程为客户服务时,父进程就会创建并运行新的子进程准备为客户提供服务;如果存在过多的空闲子进程,父进程就会依次终止这些空闲的子进程,直到服务器回到最大空闲子进程(可配置)数量之下。通过始终保持一定数量的空闲子进程来响应客户的请求,服务器可以避免在接收到客户请求时启动新的进程的开销。
2.工作者(Worker)MPM:此模块是混合使用进程和线程的运行模型。这种运行方式首先启动一个父进程,然后创建并启动一定(可配置)数量的子进程,每个子进程都创建并启动相同数量的线程,由线程监听客户请求,而子进程并不监听客户请求。重要的是父进程始终监近控子进程,当没有足够的空闲线程为客户服务时,父进程就会创建并运行新的子进程,并在子进程中创建与先前子进程创建的相同数量的线程准备为客户提供服务。这种运行方式是以牺牲可靠性和健壮性来换取可扩展性的。
3.子进程(Perchild)MPM:这是一种运行于类UNIX系统上的运行模式,它也是混合使用进程和线程的运行模型。这种运行模型与工作者MPM类似,只是每个子进程创建的线程数量可以不一致,即每个子进程都可以创建指定数量(可配置)的线程。当服务器上负载增加后,Apache不会创建新的子进程,而是在当前的子进程之一上创建新的线程为客户提供服务。这种运行方式具有最高的可扩展性,但却具有最低的可靠性。 3. Apache2.0的模块
Apache2.0仍旧采用模块的方式运行。Apache由内核,标准模块,和第三方提供的模块3个层次组成。增加一个模块则会使Apache增加一个功能支持。
二,安装启动Apache 1. 安装:
RedHat Linux 9自带了Apache2.0 RPM安装包,位于第1张光盘中。 # rpm –ivh httpd-2.0.40-21.i386.rpm
# rpm –ivh httpd-manual-2.0.40-21.i386.rpm 2. 启动Apache
# service httpd start //httpd为Apache的守护进程。 # apachectl configtest //检测配置文件语法的正确性 # httpd -t //检测配置文件语法正确性 3. 查看RedHat Linux 9中Apache的相关信息。
# apachectl –V //查看编译配置参数 # apachectl –l //查看已经被编译的模块 Compiled in modules: core.c //Apache HTTP服务器核心模块 prefork.c //表示当前Apache是以预派生(Profork)运行方式MPM运行的。 httpd_core.c //Http认证相关模块。 mod_so.c //表示当前的Apache支持Dynamic Shared Objects (DSO),即用户可以不重新编译Apache的情况下使用APache eXtenSion(apxs)编译Apache的第三方模块。 三,Redhat Linux 9 中的Apache的配置文件
//当服务器响应主机头(header)信息时显示Apache的版本各操作系统名称。 ServerTokens OS
//设置服务器的根目录 ServerRoot \"/etc/httpd\"
//设置运行Apache时使用的PidFile路径 PidFile run/httpd.pid
//若300秒后没有收到或送同任何数所就切断该连接。 Timeout 300
//保持连接的功能,即客户一次请求只能响应一个文件
//建议用户将此参数的值设置为On,即允许使用保持连接功能。 KeepAlive Off
//在使用保持连接功能时,设置客户一次请求连接能响应文件的最大上限。 MaxKeepAliveRequests 100
//在使用保持连接功能时,两个相邻的连接的时间间隔超过15秒就切断连接。 KeepAliveTimeout 15
//设置使用prefork MPM运行方式的参数,此运行方式是RedHat默认的方式 StartServers 8 //设置服务器启动时运行的进程数。 //Apache在运行时会根据负载的轻重自动调整空闲子进程数目 //若存在低于5个空闲进程,就创建一个新的子进程准备为客户提供服务 MinSpareServers 5 //若存在高于20个空闲子进程,就创建逐一删除子进程来提高系统性能 MaxSpareServers 20 //同一时间的连接数不能超过150 MaxClients 1500 //每个了进程在结束处理请求之前能处理的连接衣求为1000 MaxRequestsPerChild 1000
Listen 80 //设置服务器监听的端口
//将 /etc/httpd/conf.d目录下的所有以conf结尾的配置文件包含进来 Include conf.d/*.conf //动态加态模块(DSO)
LoadModule access_module modules/mod_access.so LoadModule auth_module modules/mod_auth.so
LoadModule auth_anon_module modules/mod_auth_anon.so LoadModule auth_dbm_module modules/mod_auth_dbm.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so LoadModule usertrack_module modules/mod_usertrack.so LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so LoadModule asis_module modules/mod_asis.so LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule imap_module modules/mod_imap.so LoadModule actions_module modules/mod_actions.so LoadModule speling_module modules/mod_speling.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so //当使用内置模块prefork.c时动态加载cgi_module ,支持CGI LoadModule cgi_module modules/mod_cgi.so
//当使用内置模块worker.c时动态加载cgi_module ,支持CGI LoadModule cgid_module modules/mod_cgid.so
//设置运行Apache服务器的用户和组。 User apache Group apache
//设置Apache服务器管理员的E-mail地址 ServerAdmin root@localhost
//关闭此选项,当Apache服务器需要指向本身的连接时使用 //ServerName:port 作为主机名,例如www.linux.com:80 //若打开此选项将使用www.linux.com port 80作为主机名。 UseCanonicalName Off
//设置Apache服务器的根文档路径。 DocumentRoot \"/var/www/html\" //设置Apache服务器根的访问权限
Options FollowSymLinks //允许符号链接跟随,访问不在本目录下的文件 AllowOverride None //禁止读取.htaccess配置文件的内容
//Indexes:当找不到Directoryindex列表中指定的文件就生成当前目录的文件列表。 Options Indexes FollowSymLinks //禁止读取.htaccess配置文件的内容 AllowOverride None //指定先执行允许访问规则,再执行拒绝访问规则。即先允许所有连接,然后不允许受限的//连接访问此目录 Order allow,deny Allow from all //具体的访问规则
Options –Indexes //对Apache服务器根的访问不生成目录列表 ErrorDocument 403 /error/noindex.html //指定错误输出页面
UserDir disable //不允许每用户的服务器配置,即每个本地用户都可以创建自己的WEB。 //站点的功能。
DirectoryIndex index.html index.html.var //指定主文档
AccessFileName .htaccess //指定保护目录配置文件的名称。
TypesConfig /etc/mime.types //指定负责MIME对应格式的配置文件的存放位置
DefaultType text/plain若罔闻 //指定MIME文件类型为纯文本或HTML文件
//当mod_mime_magic.c模块被加载时,指定Magic信息码配置文件的存放位置
HostnameLookups Off //只记录连接Apache服务器的IP地址,而不记录主机名。
ErrorLog logs/error_log //指定错误日志存放位置
LogLevel warn //定义四种记录日志的格式。
LogFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" combined LogFormat \"%h %l %u %t \\\"%r\\\" %>s %b\" common LogFormat \"%{Referer}i -> %U\" referer LogFormat \"%{User-agent}i\" agent
//指定访问日志的记录格式为combined(混合型),并指定访问日志存放位置 CustomLog logs/access_log combined
//设置Apache自己产生的页面中使用Apache服务器版本的签名 ServerSignature On
//设置内容协商目录的访问别名 Alias /icons/ \"/var/www/icons/\"
//设置/var/www/icons目录的访问权限 //Multi Views使用内容协商功能决定被发送的网页的性质 Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all
//设置Apache手册的访问别名 Alias /manual \"/var/www/manual\"
//设置/var/www/manual目录的访问权限 Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all
//指定DAV加锁数据库文件的存放位置 DAVLockDB /var/lib/dav/lockdb
//设置CGI目录的访问别名
ScriptAlias /cgi-bin/ \"/var/www/cgi-bin/\"
//由于Red Hat中不使用worker MPM运行方式,所以不用加载mod_cgid.c模块 Scriptsock run/httpd.cgid
//设置CGI目录的访问权限 Allow from all
//设置自动生成目录列表的显示方式
//FancyIndexing:对每种类型的文件前加上一个小图标以示区别 //VersionSort:对同一个软件的多个版本进行排序
//NameWidth=*:文件名子段自动适应当前目录下最长文件名。 IndexOptions FancyIndexing VersionSort NameWidth=* //当使用indexOptions FancyIndexing之后配置下面参数
//用于告知服务器在遇到不同文件类型或扩展名时采用MIME编码格式 //辨别文件类型并显示相应的图标
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/*
//当使用indexOptions FancyIndexing之后配置下面参数
//用于告知服务器在遇到不同文件类型或扩展名时采用指定的格式 //并显示对应的图标
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^
////当使用indexOptions FancyIndexing之后,县无法识别文件类型时,显示此处定义图标 DefaultIcon /icons/unknown.gif
//当服务器自动列出目录列表时,在所生成的页面之后显示README.html的内容 ReadmeName README.html
//当服务器自动列出目录列表时,在所生成的页面之后显示HEADER.html的内容。 HeaderName HEADER.html
//设置在线浏览用户可以实时解压缩.z .gz .tgz类型的文件 AddEncoding x-compress Z AddEncoding x-gzip gz tgz
//设置网页内容的语言种类(浏览器要启动内容协商),对中文网页,此项无实际意义 AddLanguage da .dk AddLanguage nl .nl AddLanguage en .en AddLanguage et .et AddLanguage fr .fr AddLanguage de .de AddLanguage he .he AddLanguage el .el AddLanguage it .it AddLanguage ja .ja AddLanguage pl .po AddLanguage kr .kr AddLanguage pt .pt AddLanguage nn .nn AddLanguage no .no AddLanguage pt-br .pt-br AddLanguage ltz .ltz AddLanguage ca .ca AddLanguage es .es AddLanguage sv .se AddLanguage cz .cz AddLanguage ru .ru AddLanguage tw .tw AddLanguage zh-tw .tw AddLanguage hr .hr
//当启用内容协商时,设置语言的先后顺序
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
//prefer:当有多种语言可以匹配,使用LanguagePriority列表中的第1项 //Fallback:当没有种语言可以匹配,使用LanguagePriority列表中的第1项 ForceLanguagePriority Prefer Fallback //设置默认字符集
AddDefaultCharset ISO-8859-1 //设置各种字符集
AddCharset ISO-8859-1 .iso8859-1 .latin1 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk AddCharset ISO-2022-JP .iso2022-jp .jis AddCharset ISO-2022-KR .iso2022-kr .kis AddCharset ISO-2022-CN .iso2022-cn .cis AddCharset Big5 .Big5 .big5
AddCharset WINDOWS-1251 .cp-1251 .win-1251 AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru AddCharset KOI8-ru .koi8-uk .ua AddCharset ISO-106-UCS-2 .ucs2 AddCharset ISO-106-UCS-4 .ucs4 AddCharset UTF-8 .utf8
AddCharset GB2312 .gb2312 .gb AddCharset utf-7 .utf7 AddCharset utf-8 .utf8 AddCharset big5 .big5 .b5 AddCharset EUC-TW .euc-tw AddCharset EUC-JP .euc-jp AddCharset EUC-KR .euc-kr AddCharset shift_jis .sjis
//添加新的MIME类型(避免用户编辑/etc/mime.types) AddType application/x-tar .tgz
//设置Apache对某些扩展名的处理方式 AddHandler imap-file map AddHandler type-map var //使用过滤器执行SSI
AddOutputFilter INCLUDES .shtml //设置错误页面目录的别名 Alias /error/ \"/var/www/error/\"
//设置错误目录/var/www/error的访问权限 AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all LanguagePriority en es de fr ForceLanguagePriority Prefer Fallback //设置错误输出页面,错误号对应相应文件 ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var ErrorDocument 410 /error/HTTP_GONE.html.var ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
BrowserMatch \"Mozilla/2\" nokeepalive
BrowserMatch \"MSIE 4\\.0b2;\" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch \"RealPlayer 4\\.0\" force-response-1.0 BrowserMatch \"Java/1\\.0\" force-response-1.0 BrowserMatch \"JDK/1\\.0\" force-response-1.0
BrowserMatch \"Microsoft Data Access Internet Publishing Provider\" redirect-carefully BrowserMatch \"^WebDrive\" redirect-carefully
四,RedHat Linux 中 Apache的默认配置信息汇总。 配置文件: /etc/httpd/conf/httpd.conf 服务器的根目录: /etc/httpd 根文档目录: /var/www/html 访问日志文件: /var/log/httpd/access_log 错误日志文件: /var/log/httpd/error_log 运行Apache的用户:apache 运行Apache的组: apache 端口: 80 模块存放路径: /user/lib/httpd/modules prefork MPM运行方式的参数: StartServers 8 MinSpareServers 5 MaxSpareServer 20 MaxClients 150 MaxRequestsPerChild 1000 默认主文档:DirectoryIndex index.html index.html.var指定。 五,Apache基本配置 A.默认配置为用户提供了一个良好的模板。基本的配置几乎不需要进行修改。但用户应该考虑修改或添加如下的基本配置指令。
1. KeepAlive On 2. MaxClients 500
3. ServerAdmin chinazk@163.com //管理员电子邮件地址 4. ServerName //服务器的FQDN(域名全称)
5. DirectoryIndex index.html 指定默认主页文件名列表。 6. IndexOptions FoldersFirst //表示目录列在前面。 B.分割配置任务
1.使用Include指令
可以使用Include指令将主配置文件进行分割。可以将指定路径下的某些文件包含进主配置文件中。例:Apache主配置文件中就包含一个Include指令 Include conf.d/*.conf用于将/etc/httpd/conf.d目录下的所有以conf结尾的配置文件包含进来。 2.使用.htaccess文件
使用.htaccess文件改变主配置文件中的配置,但是它只能设置对目录的访问控制,这个目录就是.htaccess文件存放的目录。Include只是简单的将配置文件包含到主配置文件中,而.htaccess可以覆盖主配置文件中的配置,对特定目录实行特定的访问配置。 六,.htaccess文件
A.有两种情况可能需要使用.htaccess文件: 1. 在多个用户之间分割配置。
2. 想在不重新启动服务器的情况下改变服务器的配置。 B.要使用.htaccess文件必须经过两个配置步骤:
1.首先在主配置文件中启用并控制对.htaccess文件的使用。 2.然后在需要覆盖主配置文件的目录下生成.htaccess文件。 C.配置实例.htaccess
1.首先保证在主目录下有如下配置语句 AccessFileName .htaccess //指定保护目录配置文件的名称。
3.配置实例: //首先在文档根目录下生成一个private目录,并创建测试文件 # mkdir /var/www/html/private #touch index.html //这样配置,在浏览器可查看此目录的文件列表。 # vi /etc/httpd/conf/httpd.conf //添加如下配置语句 < Directory “/var/www/html/private” > AllowOverride Options #service httpd restart # vi /var/www/html/private/.htaccess //添加如下配置语句: Options –Indexes //不允许生成目录列表。 七,配置每个用户的WEB站点 在安装Apache的本地计算机上,拥有用户账号的每个用户都够能架设单独的WEB站点。 要配置每个用户的Web站点,要经过下面的配置步骤:
修改主配置文件启用每个用户的WEB站点配置。
修改主配置文件为每个用户的Web站点目录配置访问控制。 1.配置每个用户的Web站点。
# vi /etc/httpd/conf/httpd.conf //修改如下部分的配置 UserDir disable root //出于安全考虑,禁止root用户使用自己的个人站点。 UserDir public_html //配置对每个用户web站点目录的设置
//设置每个用户web站点目录的访问权限,将下面配置行前的”#”去掉即可: # # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec # #
2.用户为自己创建web站点 $whoami //显示当前用户 chinazk $cd ~ //回主目录 $mkdir public_html //建立web站点目录,在主目录中指定的名字。 $cd .. $chmod 711 chinazk //设置权限 $vi ~/public_html/index.html //创建主页文件 注:使用浏览器访问自己的主页时,使用下面的格URL: http://IP or FQDN/~用户名
例: http://192.168.0.9/~chinazk http://192.168.0.9/~chinazk 八,访问控制
访问控制的配置指令
Order:用于指定执行允许访问规则和执行拒绝访问规则的先后顺序 Deny:定义拒绝访问列表。 Allow:定义允许访问列表
注:在书写Allow,Deny和Deny,Allow时不能添加空格字符。
1. Deny,Allow指令后面需要跟访问列表,访问列表可以使用,All 域名 IP IP/netmask
CIDR等表示。 2. 配置实例: # vi /etc/httpd/conf/httpd.conf //将下面配置行前的”#”去掉。 #
(1) 两种认证类型。在RFC 2617中定义了两种认证方式,分别为:
基本(Basic)认证 摘要(Digest)认证
注:摘要认证要比基本认证安全得多,但目前并非所有的浏览器都支持摘要认证,所以大多数情况下用户只使用基本认证。 (2) 认证的配置指令
Apache的认证配置指令 指令 AuthName AuthType AuthGroupFile AuthUserFile Apache的授权配置指令的使用格式 指令语法格式 Require user 用户名 [用户名]...... Require user 组名 [组名]..... 说明 授权给指定的一个或多个用户 授权给指定的一个或多个组 指令语法 AuthName 领域名称 AuthType Basic or Digest AuthGroupFile 文件名 AuthUserFile 文件名 说明 定义受保护领域的名称 定义使用的认证方式 指定认证组文件的位置 指定认证口令文件的位置 Require valid-user 授权给认证口令文件中的所有用户 (3)管理认证口令文件和认证组文件 注:这里只介绍基于文本文件的认证口令文件和认证组文件,并于基于数据库的认证口令文件和认证组文件的相关内容参考Apache手册 a. 管理认证口令文件 # htpasswd –c 认证口令文件名 用户名 //在添加一个认证用户的同时创建认证口令文件 # htpasswd 认证口令文件名 用户名 //向现存的口令文件中添加用户或修改已存在的用户的口令。 b. 认证口令文件的格式 用户名:加密的口令 注:安全考虑不要将认证口令文件与Web文档放在一起。尽量放在安全的地方。htpasswd并没有提供删除用户的功能,可用编辑器手动删除用户信息。 c.管理认证组文件.
Apache没有提供创建认证组文件的命令,它是一个文本文件,用户可以使用任何的文本编辑器创建修改此文件。其格式如下: 组名:用户名 用户名 。。。。。。。。。。 //在认证组文件中指定的用户名,必须先添加到认证口令文件中。 (4)配置实例:
在主配置文件中配置认证和授权 # vi /etc/httpd/conf/httpd.conf
在.htaccess文件中配置认证和授权
# vi /etc/httpd/conf/httpd.conf
在对一个容器(Directory或 Files或 Location)同时配置了访问控制和认证授权之后,这两类指令是否会起作用,将由Satisfy指令来决定。此指令有两种可能的取值: Satisfy all:访问控制和认证授权两类指令均起作用(默认值) Saitsfy any: 只要一类指令满足条件就可以访问。 2. 配置用户在指定的网段上访问资源 # vi /etc/httpd/conf/httpd.conf
DAV是分布式授权和版本控制的缩写,WebDAV可以代替FTP或NFS而更安全快捷的更新网站的内容。
2. 应用认证授权的时机
我们可以让所有人都能浏览我们的网站,但只有某些账号能使用CGI程序,如下所示: AuthType Basic //采用基本认证方式 AuthName “admin” //指定认证领域名称 AuthUserFile /var/www/passwd/linux //指定认证口令文件的位置 AuthGroupFile /var/www/passwd/admingrp //指定认证组文件
在Apache 2.0中默认包含了支持WebDAV的模块mod_dav,配置如下:
# vi /etc/httpd/conf/httpd.conf //将主配置文件改为
Web服务器是更新量最大的服务器之一,随着时间的推移站点内容将越来越多.在维护方面会带来两方面问题:
(1) 如何在文件根目录空间不足的情况下继续添加站点内容. (2) 如何在文件移动位置之后使得用户仍然能够访问. 对于第一个问题有3种解决方法:
1. 挂装新的磁盘分区到文档目录.(可以是本地或远程NFS分区)
# mount /dev/hd1 /var/www/html/add
2. 在文档目录下使用符号链接使文档目录之外的内容被访问.
在Apache的默认配置文件中已经包含了符号链接指令,所以只要在根文档目录下使用 ln –s 命令创建链接符号即可.如果对自已创建的目录,则需要指定 Options FollowSymLinks参数,以允许链接符号.
注:为了提高Apache的性能,建议不要修改Apache默认对符号链接跟随的配置,因为如果取消对符号链接的跟随,服务器在每收到一个请求时都要判断其是否为符号链接,从而影响服务器的性能.但启用符号跟随将带来安全性隐患. 3. 使用别名机制使文档目录之外的内容被访问.
别名(类似于IIS中的.虚拟目录),是将根文档以外的内容加入站点的方法.指定别名同时,使用Directory容器配置了对别名目录的访问权限.例: # vi /etc/httpd/conf/httpd.conf Alias /ftp /var/ftp/pub //设置别名及其真实的中径 对于第二个问题解决方法是使用页面重定向. Web站点结构更新后,希望用户仍能通过旧的结构访问此站点内容,可使用网面重定向功能. 1.页面重定向指令. Redirect [错误响应编码] 用户请求的URL [重定向的URL] 常用的错误响应代码 代码 301 302 303 410 说 明 URL已经永久移动到新的URL了. URL临时性的移动到新的URL,省略错误代码,默认就是此值 告知用户页面已经被替换,用户应该记住新的URL 告知用户此页面已经不存在,使用此代码时不应该使用重定向URL参数. 注:重定向的URL可以是任何地址 2.页面重定向配置实例: 设:将用户对/ftp别名的访问,重定向到www.163.com # vi /etc/httpd/conf/httpd.conf Redirect 302 /ftp http://www.163.com # service httpd restart 配置动态站点 一,在Apache上运行CGI CGI(Common Gateway Interface,CGI).公共网关接口. 1.使用mod_cgi模块 Apache2.0默认安装了支持CGI的模块mod_cgi.在Apache的配置文件中有如下的语句: 配置实例: ScriptAlias /cgi-bin/ \"/var/www/cgi-bin/\" PHP 一种先进的HTML嵌入的后台脚本编程语言.PHP独特的语法混合了C,java,Perl以及PHP式的新语法.中以比C或者perl更快的执行动态网页. //第1张光盘中 # cd /mnt/cdrom/RedHat/RPMS # rpm –ivh cur-7.9.8-5.i386.rpm # rpm –ivh gd-1.8.4-11.i386.rpm # rpm –ivh php-4.2.2-17.i386.rpm # rpm –ivh php-imap-4.2.2-17.i386.rpm //第2张光盘中 # rpm –ivh php-manual-4.2.2-17.i386.rpm # rpm –ivh php-mysql-4.2.2-17.i386.rpm # rpm –ivh php-pgsql-4.2.2-17.i386.rpm # service httpd restart //在/var/www/html目录下编写测试脚本. # iv /var/www/html //使用浏览器测试. 三,在Apache上运行perl 1.安装mod_perl模块,位于第1张光盘上. # rpm –ivh mod_perl-1.99_07-5.i386.rpm # 修改 /etc/httpd/conf.d/perl.conf文件将如下配置行的#号去掉. Alias /perl /var/www/perl # chmod +x hello.pl //浏览器测试 四,在Apache上运行JSP 以后补充 配置Apache虚拟主机. 一,虚拟主机 虚拟主机是指在同一台服务器上实现多个Web站点.可使用如下方法设置虚拟主机. (1) 同一IP不同端口虚拟主机. (2) 不同IP同主机虚拟主机 (3) 基于域名的虚拟主机. 二,虚拟主机指令. 四,不同IP相同端口号的虚拟主机 可安装多个网卡,也可以单网卡多个IP地址. # ifconfig eth0 192.168.1.1 up # ifconfig eth0:1 192.168.1.2 up # vi /etc/httpd/vhost-conf.d/ip-vhost12.conf 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- pqdy.cn 版权所有 赣ICP备2024042791号-6
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务