apache高级设置

  sre

5fc89edcb32371166.jpg_fo742.jpg
apache基础设置

(1)MySQL 安装
perl-DBI-1.52-1.fc6.i386.rpm
perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
mysql-5.0.22-2.1.0.1.i386.rpm
mysql-server-5.0.22-2.1.0.1.i386.rpm
mysql-devel-5.0.22-2.1.0.1.i386.rpm
(2)PHP 安装
php-5.1.6-15.el5.i386.rpm
php-cli-5.1.6-15.el5.i386.rpm
php-common-5.1.6-15.el5.i386.rpm
php-mysql-5.1.6-15.el5.i386.rpm
php-pdo-5.1.6-15.el5.i386.rpm
(3)httpd 安装
httpd-2.26

搭建LAMP 环境
安装mysql-5.0.22-2.1.0.1.i386.rpm 的时候自动解决对perl-DBI-1.52-1.fc6.i386.rpm 的依赖性
安装mysql-server-5.0.22-2.1.0.1.i386.rpm 的时候自动解决对
mysql-server-5.0.22-2.1.0.1.i386.rpm 的依赖性
最后安装mysql-devel-5.0.22-2.1.0.1.i386.rpm
启,设置MySQL 的root 用户密码
mysqladmin -u root password 123456 ——》设置密码
mysql -u root -p ——》使用root 用户登陆MySQL 数据库
创建需要的数据库
使用exit 退出
第二步去安装PHP 所需要的rpm 包,默认系统已经安装php-5.1.6-15.el5.i386.rpm 、
php-cli-5.1.6-15.el5.i386.rpm 、php-common-5.1.6-15.el5.i386.rpm 这三个了
安装php-mysql-5.1.6-15.el5.i386.rpm 的时候自动解决所依赖的包
php-pdo-5.1.6-15.el5.i386.rpm
这样PHP 就算安装完成了
第三部分去安装httpd 服务
yum install httpd
配置Apache 的配置文件
配置管理员邮箱和监听地址和端口
配置网页存放的目录
修改首页文档,添加PHP 的首页文档
创建网页存放的目录,并给予权限
写一个PHP 的测试网页,测试一下是否安装成功
touch index.php
echo ‘‘index.php
在客户端使用浏览器打开服务器的IP 或者域名进行测试
下载的一个PHP 的论坛程序,语言是UTF-8 的(Apache 默认是UTF-8)
若下载的是GB2312 的,那么就得修改一下httpd.conf 配置文件的语言了
上传upload 里面的所有文件到网页目录
浏览器进入,开始安装

个人主页的设置
编辑Apache 的配置文件,开启用户个人主页的设置
UserDir public_html
注释掉这行: UserDir disable
删除这行UserDir public_html 前面的#
到用户的家目录下面创建public_html 目录,设置权限
在public_html 目录里面创建用户的首页
配置basic 基本认证,基于用户名和密码
使用比较灵活的一种认证配置方式,使用基于目录的认证,把认证文件放在用户可以管理
的主业目录内,这样用户就可以随意修改了
添加论坛所在目录权限设置,在

下面添加如下内容,对网页目录设置权限,开启basic 用户认证:

AllowOverride AuthConfig
Order allow,deny
Allow from all

到网页目录下进行配置认证文件
cd /www
vim .htaccess
authname “this is a bbs’s basic”
authtype basic
authuserfile /etc/httpd/conf/bbs.htpasswd
require valid-user
注意:.htaccess 前面有“.”,是一个隐藏文件
内容解释:
<>里面是目录
Authtype 是认证类型Basic apache 自带的基本认证
Authname 认证名字,是提示你输入密码的对话框的提示语
Authuserfile 是存放认证用户的文件
require user 允许指定的一个或多个用户访问,就是后面跟的redking 用户
如果认证文件里面还有其他用户,还是不能访问
require valid-user 的话,就是所有认证文件里面的用户都可以访问
require group 授权给一个组,这个参数很少用
生成htpasswd 文件并在htpasswd 中添加用户数据
htpasswd -c /etc/httpd/conf/bba.htpasswd bbs
注意:-c 就是创建bbs.htpasswd 这个文件,最后的bbs 则是要添加到bbs.htpasswd 里的用
户,bbs 是系统用户,我提前已经建立好了bbs 这个系统用户了
也可以添加其他的用户,如www
htpasswd /etc/httpd/conf/bba.htpasswd www
注意:因为bbs.htpasswd 这个文件已经存在,所以我们在这个添加用户的语句中不需要再添
加-c 的参数,然后提示你输入密码
看看bbs.htpasswd 的内容
cat bbs.htpasswd
cat bba.htpasswd

用户的主页配置认证
添加网页目录的权限配置

AllowOverride AuthConfig
Order allow,deny
Allow from all

到用户主页目录下配置认证文件
vim htaccess
authuserfile /etc/httpd/conf/test.htpasswd

然后生成htpasswd 文件并在htpasswd 中添加用户数据
htpasswd -c /etc/httpd/conf/test.htpasswd test
cat test.htpasswd

使用别名实现网站目录转换
,搜索Alias,在默认539 行下面添加“Alias /test “/home/test/public_html/” ”
这行,Alias /test:是别名的名称, “/home/test/public_html/” :是真实网站目录的位置,
Directory 是对你真是目录的权限设置。
Alias /icons/ “/var/www/icons/”
Alias /test “/home/test/public_html/”

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

浏览器测试
注意:浏览器输入:http://域名或者IP/别名的名称

为Apache 的虚拟主机配置SSL
首先确认的系统已经安装openssl 和mod_ssl、distcache
rpm -qa |grep ssl
rpm -qa |grep distcache
先为一个网页配置SSL
网页存放目录:/www
生成1024 位RSA 密钥:
#openssl genrsa -des3 -out server.key 1024
Server.key:密钥的名称
系统提示输入PEM pass phrase,也就是密码,输入后牢记它
生成的CSR 文件可以提交给第三方签证机构(CNNIC),并获取证书
用server.key 生成证书签署请求CSR 文件
#openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key: 请你输入密钥的密码
Country Name: 两个字母的国家代号
State or Province Name: 省份名称
Locality Name: 城市名称
Organization Name: F 公司名称
Organizational Unit Name: 部门名称
Common Name: www.wqmsl.com 这里写上你的主机名称
Email Address: Email 地址
以上除Common Name 填写之外其他的都可以直接回车默认
利用CA 的RSA 密钥创建一个自签署的CA 证书
注意:因为是自签名证书,所以浏览器中仍然会提示”使用了无效的安全证书,该证书因为其
发行者证书未知而不被信任”之类的错误信息,并要求浏览者确认后才继续浏览。
要避免这个问题,可以购买商业认证(CA)或者寻找免费的第三方认证提供商发行的证书,
然后重新生成主机的证书,需要第二步生成的CSR 文件。
#openssl req -new -x509 -days 3650 -key server.key -out server.crt
和生成CSR 文件步骤一样,这个是自签名的证书
现在去配置SSL
cd conf.d/
编辑ssl.conf
配置网页目录,和监听的端口443
DocumentRoot “/www”
ServerName netinn.net:443
注释原有的证书和密钥并配置新证书和密钥的路径
保存并重启httpd 服务(重启的时候要求输入密钥的密码,否则启动失败)
访问测试
可以看到自签名的证书
点击“是”继续访问

生成证书、密钥和CSR 文件配置方法
首先确认系统已经安装openssl 和mod_ssl、distcache
生成1024 位RSA 密钥
make server.key
输入2 次密码即完成
注意:注意执行命令的目录所在,必须在/etc/pki/tls/certs 下面执行
利用CA 的RSA 密钥创建一个自签署的CA 证书
此过程和一种方法的生成过程是一样的
仔细看的话它其实也是在执行了openssl req -new -x509 -days 3650 -key server.key -out
server.crt
这条命令查看
用server.key 生成证书签署请求CSR 文件
make server.csr
查看一下生成的CSR 文件、密钥和证书
ls |grep server
剩下的和上面就一样了
最后去配置ssl.conf 里面的证书和密钥的路径就OK 了

出现的问题:
如有启动httpd 的时候提示错误:
make_sock:could not bind to address 0.0.0.0:80
no listening sockets available,shutting down
Unable to open logs
解决方法:
出现这个问题,是因为APACHE 的默认端口被占用的缘故.解决方法就是把这个端口占用的程
序占用的端口去掉.或者改换APACHE 的占用端口.
APACHE 的端口当然好解决.直接改配置文件就行了.现在我们就说说如何改其它文件占用
APACHE 默认端口80
首先,查看是哪个程序占用了端口.方法是:
1.netstat -lnp|grep 80
tcp 0 0 192.168.1.6:61027 0.0.0.0:* LISTEN
6289/oproxyd
tcp 0 0 :::80 :::* LISTEN
846/httpd
tcp 0 0 ::ffff:192.168.180.68:7001 :::* LISTEN
32015/java
找到pid 846
#ps 846 查看
#kill -9 846 杀掉
重新启动你的服务就OK 了

httpd.conf文件配置详解
Apache 的基本设置主要交由httpd.conf 来设定管理,我们要修改Apache 的相关设定,主要还
是通过修改httpd.cong 来实现。下面让我们来看看httpd.conf 的内容,它主要分成3大部分:
Section 1:Global Environment
Section 2:’Main’ server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
这表示Apache 是以standalone 启动,也可以是inetd。所谓standalone 是指启动一次来接
听所有的连线;而inetd 是接到http 的连线要求才启动,随着连线的结束而结束,这样
负担是不是很但呢?所以一般都是以standalone 启动。
·ServerRoot “/usr/local/httpd”
此为apache 的目录
·#LocdFile /use/local/httpd/logs/httpd.lock
保留预设值,不更动
·PidFile /usr/local/httpd/logs/httpd.pid
此文件记录着apache 的父处理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存储处理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
由于我们统筹由httpd.conf 来管理,所以这两个文件预设是注解起来的,可以保留预设
值不更动
·Timeout 300
设盯超时的时间。如果用户端超过300秒还没连上server,或server 超过300秒还没传送
信息给用户端,即断线。
·KeepAlive On
允许用户端的连线有多个请求,设为Off 表示不允许
·MaxKeepAliveRequests 100
每次连线最大的请求树木,数字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少会有5个闲置的处理程序,如果实际的数目少于此数目,则会
增加处理程序。MaxSpareServers 10表示最大的闲置处理程序数目,如果你的网站需求量
很大,可以将此数目设大一些,大不要随便将此数目设得太大。
·StartServers 5
启动时Server 的数目
MaxClients 150
限制同时间最大的连线数目,当然不能设得太小,一旦达到此数目,就无法再增加用户

·MaxRequestPerChild 0
限制子处理程序结果前的要求数目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的连接端口或IP
·BindAddress *
可以接听*(所有IP 地址)、指定的IP 地址或是完整的域名
·#LoadModule foo_module libexec/mod_foo.so
使用DSO 模块
·#ExtendedStatus On
可检阅apache 的状态信息,预设是Off(注解起来)

【第二部分】
如果之前的ServerType 是inetd,请直接跳到ServerAdmin。
·Port 80
Standalone 服务器接听的连接端口,当然也可以是其他小于1023的端口号
·User nobody
·Group nobody
执行httpd 的用户和群组
·ServerAdmin 管理员的电子邮件地址
这是管理员的电子邮件地址,如果apache 有问题的话,会寄信通知管理员,当然你也可以建
立一个专门负责web 的帐号来收信
·ServerName 你的主机名称
此为主机名称,如果没有域名,也可以用IP
·DocumentRoot “usr/local/httpd/htdocs”
此目录为apache 放置网页的地方,里面的index.html 即为连到此主机的预设首页
·
Options FollowSymLinks
AllowOverride none
此目录设定用户放置网页的目录(public_html)的执行动作。详细的目录存取方法会在后面
说明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all
此目录设定apache 的网页目录(htdocs)的执行动作
·UserDir public_html
用户可在自己的目录下建立public_html 目录来放置网页,输入http://主机地址/~用户名称即
可连接到…劳撤胖玫牡胤?/a>
·DirectoryIndex index.html
这里设定预设主页的名称
·AccessFileName .htaccess
这个是控制存取的文件名称,一般采用预设的.htaccess 名称,后面会说明htaccess 的使用方

·
Order allow,deny
Deny from all

这用来防止其他人看到.ht 开头的文件内容,不仅是保护.htaccess 的内容,还保护.htpasswd 的
内容。当然也可以直接写成。如果你有更改AccessFilename,例如将.htaccess 改成.accessht,
请记得也要在此做相关的更改,如此才能防止其他人看到哦
·#CacheNegotiatedDocs
注解起来是告诉Proxy 不要将互动产生的文件存入cache,如果拿掉#,则会存在cache 中
·UseCanonicalName On
使用标准的名称,预设是On。假设有一个web server 的全名是www.sample.com,一般称为
www;如果us…羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME 文件类型的文件。你可以自行编辑mime.types 文件。
·DefaultType text/plain
当server 不认得此文件类型时的预设格式,此设定是当成一般文字
·
MIMEMagicFile /usr/local/httpd/conf/magic
mod_mime_magic 模块可使server 由文件内容决定其MIME 类型。如果有载入
mod_mime_magic 模块,才会处理MIMEMagicFile 这一段。如果是…,则表示如果没有载入
该模块,才会处理这一段
·HostLookups Off
如果为On,则每次都会向name server 解析该IP,记录此连线的名称(例如www.apache.org)
自换岷牟簧偈奔洌…为Off,仅记录IP
·ErrorLog /usr/local/httpd/logs/error_log
指定发生错误的记录文件(error_log)位置。如果在没有指定发生错误的记录文件,则会沿
用此文件
·LogLevel warn
记录分成很多等级,在此是warn。各等级如下: 等级说明
debug debug 信息
info 普通信息
notice 重要信息
warn 警告信息
error 发生错误
crit 紧急情况
alert 马上要处理的情况
amerg 系统快要死了
·LogFormat “%h %l %u %t\”%r\”%>s %b\”{Referer}i\”\”${UserAgent}i\””combined
LogFormat “%h %l %u %t”%r\”%>s %b”commom
LogFormat “%{Referer}i->%U”referer
LogFormat “%{User-agent}i”agent
自定四种记录格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的记录文件(access_log)使用自定的common 格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
这三个记录文件也是使用自定义格式(分别是referer、agent、combined),不过注解起来表
示未使用这三个文件
·ServerSignature On
设为On 时,在server 所产生的网页(像是错误发生时)上,会有apache 的版本、主机、连
接端口的一行信息;如果设为Email,则会有mailto:给管理员的超链接
·Alias /icons/ “/usr/local/httpd/icons/”
使用较短的别名,其格式为:Alias 别名原名。
·ScriptAlias /cgi-bin/ “/usr/local/httpd/cgi-bin/”
和Alias 一样,只是这是设定server script 的目录
·IndexOptions FancyIndexing
显示好看的文件清单(配合下面各文件所对应的图形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
这些是在显示文件清单(之前所说的FancyIndex)时,各种文件类型的对应图形。例如.ps .si .eps
这三种文件的表示图形都是a.gif
·#AddDescription “GZIP conpressed document” .gz
#AddDescription “tar archive” .tar
#AddDescription “GZIP compressed tar archive” .tgz
这些是在显示文件清单时,在文件后面附上说明,其格式为:
AddDescription “说明” 文件名
例如:AddDescription “It is private txt” my.txt
·ReadmeName README
显示文件清单时,在最下面显示README 的文件内容
设置CGI 脚本/将httpd.conf 做为唯一的配置文件/用户授权和访问控制等

一、关于CGI 执行脚本的配置
这里有两种设置CGI 脚本的方法。第一、CGI 的脚本文件以.cgi 为扩展名;第二、设置脚本
可执行目录。但是这两种方法都需要将要执行的文件设置为711,才可以被执行。
第一种方法,我们需要在access.conf 文件种将你要发行的目录设置为Option ExecCGI All,
在srm.conf 资源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
这样在所有的目录种只要你的文件是.cgi 为扩展名的,且文件访问权限为711的,无论给文件
在你发行目录的任何一个地方都可以做为CGI 被Apache 服务器调用。这种方法一般没有第
二种方法安全。
第二种方法,是将一个目录作为一个可执行目录,将所有的cgi 文件都放在其中,这里就不
一定非得是以.cgi 为扩展名得文件可以执行,而是只要有711属性的文件就可以被执行,而且
其它的非可执行文件都被禁止访问。我们的默认配置文件种就有一个很好的例子:
access.conf:

Allow Override None
Options ExecCGI

srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
这样只要在/home/httpd/cgi-bin/目录中的可执行文件都可以被Web 服务器调用,而其它的非
可执行文件将被拒绝访问。
二、配置用户的发行目录
这里有两种设置方法:
第一种是系统的默认方法,即用户目录下的public_html 目录为用户的发行目录,且默认的主
页文件为index.html,且该目录不支持CGI。
第二种是在其它目录种专门为用户设置发布目录,如我想在/home/html 目录做为用户的web
目录,那管理员就应该在该目录下为每一个用户设置一个子目录,如:/home/html/user01、
/home/html/user02等。那么,你的srm.conf 文件中的UserDir 后面就不能再是public_html 了,
应该改为:UserDir /home/html//,注意这里的“”代表anyone,当你再浏览器中请求一个如
http://www.domain/~user01时,Apache…ndex.html 文件。
这种设置不需要到access.conf 中设置该目录的访问属性,还有,当我们设置虚拟主机时也不
用设置目录的访问属性,但是如果你想让某个目录具有CGI 权限,都要到Access.conf 文件
中去配置目录的访问权限,如:你想让你的所有用户在他们的发布目录中具有CGI 访问权,
则需要在你的access.conf 中这样设置:

Allow Override None
Options ExecCGI

注意这里设置用户目录中的cgi-bin 子目录为cgi 执行目录,这是一种安全的设置,而且也是
一种UNIX 的习惯。
三、如何将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 服务很重要,一般
不建议设置为这种方式运行。
四、将httpd.conf 做为唯一的配置文件
在Apache 中给用户提供了三个配置文件: srm.conf、access.conf 和httpd.conf files。实际
上这三个文件是平等的,所有的配置都可以放在一个单独的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
五、用户授权和访问控制
你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一
个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这
是用CGI 做出来的,其实不然,这是WWW 服务器的用户授权和访问控制机制在发挥作用。
你是否还记得在设置Apache 服务环境的过程中,有……..<./Directory>这个指令,
可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活
性较差,通过AccessFile 指令指定访问控制文件的方式则比较灵活,在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

用户访问控制三个.htaccess 文件、.htpasswd 和.htgroup(用于用户授权),为了安全起见,应
该防止用户浏览其中内容,可以在httpd.conf 中加入以下内容阻止用户对其进行访问:

Order deny, allow
Deny from all

这样这三个文件就不会被用户访问了。

6、限制某些用户访问特定文件
可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用
,比如:不允许非domain.com 域内的用户对/prices/internal.html 进行访问,可以用
如下的设置:

order deny,allow
deny from all
allow from .domain.com

如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts 文件中,将其IP 地址映射
到某个指定的名称,然后在Location 中对其进行设置,否则该选项是不起作用的。

7、只接受来自特定链接的访问
例如,只让所有来自http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访
客都不得进入; ” * “表示此网站底下所有的链接。其中的http://www.sina.com.cn/* 也可以
是:http://202.106.184.200/* 或是指定文件http://www.sina.com.cn/news.html
.htaccess 文件的内容如下:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName ExampleAllowFromSpecificURL
AuthType Basic
order deny,allow
deny from all
referer allow from http://www.sina.com.cn/*

六、如何通过Apache 访问挂接到mnt 中的目录内容
在Linux 下,要浏览光盘的内容,必须要先将光盘挂接到/mnt/cdrom 上,在Linux 下访问dos
或其它分区也一样,都要将其先挂接到/mnt 下。下面提供的方法,可以通过Apache 显示上
挂的目录内容:
1、先将需要挂接的内容挂接到mnt 下,如:
mount –t iso9660 /dev/cdrom /mnt/cdrom
2、修改/usr/local/etc/httpd/conf 中的srm.conf 文件(在Apache1.3.2中修改httpd.conf)
加入别名支持:

Alias fakename realname

alias for netware server //

Alias /netware/ /mnt/MYDOM_NW/vol1/home/htmldocs/
Alias /winNT/ /mnt/MYDOM_NT/
Alias /unix/ /mnt/MYDOM_UNIX
其实这一步还有个最简单的方法就是直接在WWW 文件目录下建立链接目录,比如:
ln –s /mnt/MYDOM_NT/ winNT
也能达到同样的效果。
3、最后,用Directory 分别指定用户对上面这几个目录的访问权限:

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

注意, Options 中的Indexes 一定要注明,否则被打开的目录中若没有Index.html 文件,用户
无法浏览整个目录的结构,服务器会返回错误指示。
这些工作都完成后,别忘了重新启动Apache。在客户端通过http://www.yourdomain/CDROM/
访问光盘内容,其余系统以此类推
#DocumentRoot “/usr/local/apache/htdocs”
#设置存放站点html 文件的目录。

Options FollowSymLinks
AllowOverride None

#设置/目录的指令。具体地说明:
Option:定义在目录内所能执行的操作。
None:表示只能浏览,
FollowSymLinks:允许页面连接到别处,
ExecCGI:允许执行CGI,
MultiViews:允许看动画或是听音乐之类的操作,
Indexes:允许服务器返回目录的格式化列表,
Includes:允许使用SSI。这些设置可以复选。
All:则可以做任何事,但不包括MultiViews。
AllowOverride:加None 参数表示任何人都可以浏览该目录下的文件。
另外的参数有:FileInfo、AuthConfig、Limit。

3 thoughts on - apache高级设置

  • java –version
    如果出现openjdk,最好还是先卸载掉openjdk,在安装sun公司的jdk.
    rpm -qa|grep java

    rpm -e –nodeps libguestfs-java-1.20.11-14.el6.x86_64 tzdata-java-2015f-1.el6.noarch java-1.7.0-openjdk-1.7.0.85-2.6.1.3.el6_7.x86_64 java-1.8.0-openjdk-1.8.0.51-3.b16.el6_7.x86_64 java-1.8.0-openjdk-headless-1.8.0.51-3.b16.el6_7.x86_64

    出现以上信息说明已成功启动。

  • 启动时报错:
    Starting httpd: httpd: Syntax error on line 202 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/libphp5.so into server: /etc/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory

    用yum install php 即可

LEAVE A COMMENT

Captcha Code