有关Apache配置及使用在LinuxAid中已经有不少文章做了详细阐述本文讨论了在使用Apache时有关配置文件使用及对文件访问控制等内容算是对Apache使用所做些补充吧!
如果您对Apache有定了解特别是对几个配置文件有定了解这将会有助于您对本文内容理解;如果恰巧您不是很了解这几个配置文件使用那么就借着这个机会来起熟悉下吧
、有关CGI执行脚本配置
这里有两种设置CGI脚本思路方法第、CGI脚本文件以.cgi为扩展名;第 2、设置脚本可执行目录但是这两种思路方法都需要将要执行文件设置为711才可以被执行
第种思路方法我们需要在access.conf文件种将你要发行目录设置为Option ExecCGI All在srm.conf资源配置文件中加上下列句:
AddHandle cgi-script .cgi
这样在所有目录种只要你文件是.cgi为扩展名且文件访问权限为711无论给文件在你发行目录任何个地方都可以做为CGI被Apache这种思路方法般没有第 2种思路方法
第 2种思路方法是将个目录作为个可执行目录将所有cgi文件都放在其中这里就不定非得是以.cgi为扩展名得文件可以执行而是只要有711属性文件就可以被执行而且其它非可执行文件都被禁止访问我们默认配置文件种就有个很好例子:
access.conf:
Allow Override None
Options ExecCGI
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
这样只要在/home/httpd/cgi-bin/目录中可执行文件都可以被Web而其它非可执行文件将被拒绝访问
2、配置用户发行目录
这里有两种设置思路方法:
第种是系统默认思路方法即用户目录下public_html目录为用户发行目录且默认主页文件为index.html且该目录不支持CGI
第 2种是在其它目录种专门为用户设置发布目录如我想在/home/html目录做为用户web目录那管理员就应该在该目录下为每个用户设置个子目录如:/home/html/user01、/home/html/user02等那么你srm.conf文件中UserDir后面就不能再是public_html了应该改为:UserDir /home/html/*/注意这里“*”代表anyone当你再浏览器中请求个如http://www.do/~user01时Apache服务器就会自动将你请求转移到/home/html/user01中然后去寻找index.html文件
这种设置不需要到access.conf中设置该目录访问属性还有当我们设置虚拟主机时也不用设置目录访问属性但是如果你想让某个目录具有CGI权限都要到Access.conf文件中去配置目录访问权限如:你想让你所有用户在他们发布目录中具有CGI访问权则需要在你access.conf中这样设置:
Allow Override None
Options ExecCGI
注意这里设置用户目录中cgi-bin子目录为cgi执行目录这是种设置而且也是种UNIX习惯
3、如何将Apache服务器设置为inetd子服务
当你安装了Apache后默认设置为standalone方式运行如果你想将它设置为inetd子服务首先在每次激活Linux时不激活httpd然后编辑/etc/inetd.conf在其中加入下列语句:http stream tcp nowait root /usr/sbin/httpd httpd
然后重新激活inetd服务器这样你用ps -aux命令查看进程运行情况时你不会发现httpd进程存在但是旦有客户请求个页面时inetd就激活个httpd进程为该请求服务的后就自动释放这种运行方式有助于节省系统资源但是如果你web服务很重要般不建议设置为这种方式运行
4、将httpd.conf做为唯配置文件
在Apache中给用户提供了 3个配置文件: srm.conf、 access.conf 和 httpd.conf files 实际上这 3个文件是平等所有配置都可以放在个单独httpd.conf文件中事实上在Apache 1.3.2中就已经这样做了在httpd.conf中应包括以下两条指令来防止Apache对srm.conf和access.conf两个配置文件访问:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要注释掉以下这两行即可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
5、用户授权和访问控制
你也许在访问某些网站WebSite时会遇到过这样情况当你点击某个连接时你浏览器会弹出个身份验证对话框要求输入账号及密码如果没有就无法继续浏览了有人会以为这是用CGI做出来其实不然这是WWW服务器用户授权和访问控制机制在发挥作用
你是否还记得在设置Apache服务环境过程中有
1、首先对httpd.conf文件进行设置如下:
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 定要设置为All这样后面.htaccess文件才会起作用
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
#指定配置存取控制权限文件名称
AccessFileName .htaccess
2、创建.htaccess文件內容
要控制某目录访问权限必须建立访问控制文件文件名前面指定“.htaccess”其内容格式如下:
AuthUserFile 用户帐号密码文件名
AuthGroupFile 群组帐号密码文件名
AuthName 画面提示文字
AuthType 验证方式
密码验证方式
用户验证方式AuthType目前提供了Basic和Digest两种
密码检验设定思路方法和httpd.conf中相关设定相同
具体例子如下:
AuthUserFile /etc/secure.user
AuthName 安全认证中心
AuthType Basic
require valid-user
3、建立用户密码文件
如果你是第次创建用户密码命令格式如下:
htpasswd -c 密码文件名 用户名称
在上面例子中我们将用户密码文件放到了/etc/secure.user文件中所以这里应按照如下进行操作:
htpasswd -c /etc/secure.user sword
会提示你输入两次用户口令然后用户密码文件就已经创建sword这个用户也添加完毕了
如果要向密码文件中添加新用户按照如下命令格式进行操作:
htpasswd 密码文件 用户名称
这样重新启动httpd后进行该WEB目录时就会有个对话框弹出要求输入用户名及用户口令了
4、如何减少访问控制对Apache性能影响
频繁使用访问控制会对Apache性能产生较大影响那么如何才能减少这种影响呢?最简单也是最有效思路方法的就是减少.htaccess文件数目这样可以避免Apache对每个请求都要按照.htaccess文件内容进行授权检查它不仅在当前目录中查找.htaccess文件它还会在当前目录父目录中查找
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
通常在根目录下没有htaccess文件但Apache仍然会进行例行检查以确定该文件确实不存在这是影响很影响服务器工作效率事情下面思路方法可以消除这个讨厌过程:将AllowOverride选设置为None这样Apache就会检查.htaccess文件了将/根目录AllowOverride选项设为None只将需要进行访问控制目录下AllowOverride选项设置为all如下面例子中将/根目录AllowOverride 选项关闭了只打开了/usr/local/etc/httpd/htdocs目录下AllowOerride选项这样系统就只在/usr/local/etc/httpd/htdocs中检查.htaccess文件达到提高服务效率目
AllowOverride None
AllowOverride All
如果除了根目录以外还有其它存放WWW文件目录你也可以采取同样思路方法进行设置比如:如果你使用UserDir来允许用户访问自己目录AllowOverride设置如下:
AllowOverride FileInfo Indexes IncludesNOEXEC
5、防止用户访问指定文件
系统中有些文件是不适宜提供给WWW用户如:.htaccess、htpasswd、*.pl等可以用
order allow,deny
deny from all
用户访问控制 3个.htaccess文件、.htpasswd和.htgroup(用于用户授权) 为了安全起见应该
最新评论