打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
学习Apache

学习Apache

作者:夏武

1 简介

2 架构

3 安装

第一步,从这里下载Apache。

第二步,解压缩下载的Apache文件。这里我们下载的文件名假定为httpd-2.2.6.tar.gz。

tar xvfz httpd-2.2.6.tar.gz

第三步,编译和安装。这里我们将mod_rewrite模块通过DSO机制在运行时动态加载, apache被安装在$PREFIX(比如/usr/local)下面。

cd httpd-2.2.6./configure --prefix=$PREFIX --enable-rewrite=sharedmakemake install
最后,测试一下apache。
$PREFIX/bin/apachectl -k start

访问一下,看一下localhost可以看到apache的默认页面。

4 配置mod_rewrite模块

4.1 介绍

此模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。此URL操作可以依赖于各种测试,比如服务器变量、环境变量、HTTP头、时间标记,甚至各种格式的用于匹配URL组成部分的查找数据库。此模块可以操作URL的所有部分(包括路径信息部分),在服务器级的(httpd.conf)和目录级的(.htaccess)配置都有效,还可以生成最终请求字符串。此重写操作的结果可以是内部子处理,也可以是外部请求的转向,甚至还可以是内部代理处理。

4.2 标准URL重定向

比如,我们要将/~tom重定向到/u/tom,可以利用标准URL重定向。

RewriteRule   ^/~([^/]+)/?(.*)    /u/$1/$2  [R]

4.3 标准主机名重定向

比如,将强制用户使用www.example.com代替exaple.com。

RewriteCond %{HTTP_HOST}   !^fully\.qualified\.domain\.name [NC] 
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]

4.4 改变DocumentRoot

比如将指向/重定向到/about。

RewriteEngine onRewriteRule   ^/$  /about/  [R]

4.5 重定向到不同的WEB服务器

比如,将/~user/重定向到http://newserver/~user/。

RewriteEngine onRewriteRule   ^/~(.+)  http://newserver/~$1  [R,L]

4.6 如何用重定向实现虚拟用户主机

比如我们要实现这样的一个域名www.username.host.domain.com(这点对于zeuux自由网站系统有用)。

RewriteEngine onRewriteCond   %{HTTP_HOST}                 ^www\.[^.]+\.host\.com$RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]RewriteRule   ^www\.([^.]+)\.host\.com(.*) /home/$1$2

4.7 基于时间的重定向

比如我们要实现一个这样的功能,对于晚上和白天提供不同风格的网页,可以这样做。

RewriteEngine onRewriteCond   %{TIME_HOUR}%{TIME_MIN} >0700RewriteCond   %{TIME_HOUR}%{TIME_MIN} <1900RewriteRule   ^index\.html$             index.day.htmlRewriteRule   ^index\.html$             index.night.htm

4.8 禁止网络爬虫的访问

很多网络爬虫不遵守在/robots.txt文件中定义的"Robot Exclusion Protocol", 可以禁掉。不如我们要保护/private/memeber

RewriteCond %{HTTP_USER_AGENT}   ^NameOfBadRobot.*RewriteCond %{REMOTE_ADDR}       ^123\.45\.67\.[8-9]$RewriteRule ^/private/memeber/.+   -   [F]

4.9 通过外部程序或者文件重定向

如果mod_rewrite不满足你的要求,可以通过外部程序扩展。例如,

RewriteEngine onRewriteMap    zeuux-map       prg:/home/zeuux/map.zeuux.plRewriteRule   ^/~zeuux/(.*)$  /~zeuux/${zeuux-map:$1}
#!/path/to/perl#   disable buffered I/O which would lead#   to deadloops for the Apache server$| = 1;#   read URLs one per line from stdin and#   generate substitution URL on stdoutwhile (<>>) {s|^foo/|bar/|;print $_;}

5 配置缓存模块

6 配置Apache的身份认证

修改httpd.conf文件,确保有如下项:

	   # AccessFileName: The name of the file to look for in each directory 
# for access control information.
#
AccessFileName .htaccess
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#

AllowOverride AuthConfig
Options None
Order allow,deny
Allow from all

第一项说明,用于身份认证的文件名是.htaccess,第二项是对你要限制的目录进行相应的配置,例子里是要限制cgi-bin目录的访问。修改httpd.conf文件以后,需要重新启动httpd守护进程,才能使配置生效。命令如下:

apachectl restart

在/etc目录下,使用htpasswd命令建立password文件:

htpasswd -c htpasswd root

然后在待限制的目录里(cgi-bin)建立.htaccess文件,内容如下:

AuthUserFile /etc/htpasswdAuthName "zeuux.org Auth"AuthType BasicRequire valid-user

此时,已经建立了对cgi-bin目录的WEB访问,即此时再通过WEB访问该目录内的内容时,需要如下的认证:

用户:root

口令:xxx

―――――――――――――――――――――――――――――――――――――――

设定apache的URL访问控制功能:

在httpd.conf里做如下的设定:

		 < Location /cgi-bin/cvsweb.cgi/ns210402/src/kernel>Order deny,allowDeny from allAllow from 10.1.2.30 10.1.2.91 10.1.2.230 10.1.2.15</Location>

经过上面的设定,/cgi-bin/cvsweb.cgi/ns210402/src/kernel目录(WEB宿主目录)只能由上述几个IP地址访问。实现了基于URL的安全功能。

7 FastCGI配置

from site : http://www.zeuux.org/science/learning-apache.cn.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
URL重写指南 - Apache HTTP服务器
什么是URL重写之URL重写优化
Apache Rewrite url重定向功能的简单配置
多种URL重定向优化【转】
Apache Url Rewrite 配置php伪静态的方法
HowTo configure Apache to run Redmine
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服