部署环境(关闭防火墙、selinux)
[root@miner_k ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
第二部分:中心主机的配置
ServerAdmin root@localhost #如果网站有问题需要联系的管理员邮箱
ServerName www.miner_k.com:80 #主站点名称(网站的主机名)。
DocumentRoot "/var/www/html" #主站点的网页存储位置
<Directory "/var/www/html"> #对访问目录的访问控制
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
参数的简介:
Options:配置在特定目录使用哪些特性,常用的值和基本含义如下:
ExecCGI: 在该目录下允许执行CGI脚本。 FollowSymLinks: 在该目录下允许文件系统使用符号连接。 Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。 SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。 Includes 允许执行客户端 MultiViews 多功能视图,和客户端协商的机制,根据客户端的语言返回的语言也不同
AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):
None: 当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。 All: 在.htaccess文件中可以使用所有的指令。 其他的可用值及含义(如:Options FileInfo AuthConfig Limit等),
Order:控制在访问时Allow和Deny两个访问规则哪个优先:
Allow:允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。 Deny:拒绝访问的主机列表。 order中定义了allow和deny的优先级别,写在后面的优先级较高。下面allow和deny的顺序没有关系
DirectoryIndex index.html index.htm index.php #主页文件的设置(本例将主页文件设置为:index.html,index.htm和index.php)
不同网段的访问控制
只允许192.168.0.0网段
order allow,deny
allow from 192.168.0.0/24
order deny,allow
deny from all
allow from 192.168.0.0/24
拒绝10.0.0.0网段
order deny,allow
deny from 10.0.0.0/24
allow from all
> 用户认证的控制
(1)修改配置文件
Alias /download/ "/var/www/download/"
<Directory "/var/www/download">
Options Indexes
AllowOverride authconfig #可以换成none不认证 authconfig 需要认证
authname "auth"
authtype basic #认证类型
authuserfile /etc/httpd/users # 用户的配置文件
require user user1 #运行用户配置文件中的user1登录
order allow,deny
allow from all
</Directory>
(2) 创建用户和密码文件
htpasswd -c -m /etc/httpd/users user1
htpasswd -m /etc/httpd/users user2
参数:
-c 创建文件
-m 密码是使用MD5加密
控制不同用户的验证登录配置:
AuthType Basic #认证类型是基本认证
AuthName "Restricted Files" #认证提示
AuthUserFile /var/httpuser/passwords#认证时的账号和密码文件
Require user bearzhang #只有berzhang这个用户才能登录
#Require valid-user # 允许文件中的所有用户登录
控制不同组的用户登录配置
AuthType Basic #认证类型是基本认证
AuthName "Restricted Files" #认证提示
AuthBasicProvider file
AuthUserFile /passwords #认证时的账号和密码文件
AuthGroupFile /groups #内容组名:用户 mygroup:user1 user2
Require group GroupName #只有mygroup组中的用户才能登录
> 访问日志格式的配置
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 #common为日志格式名称
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log common
格式中的各个参数如下:
%h —–客户端的ip地址或主机名
%l —–The 这是由客户端 identd 判断的RFC 1413身份,输出中的符号 “-“表示此处信息无效。
%u —-由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 “-” 表示此处信息无效。
%t —-服务器完成对请求的处理时的时间。
“%r” —-引号中是客户发出的包含了许多有用信息的请求内容。
%>s —-这个是服务器返回给客户端的状态码。
%b —-最后这项是返回给客户端的不包括响应头的字节数。 、
“%{Referer}i”—-此项指明了该请求是从被哪个网页提交过来的。
“%{User-Agent}i” —-此项是客户浏览器提供的浏览器识别信息。
下面是一段访问日志的实例:
192.168.10.22 - bearzhang [10/Oct/2005:16:53:06 +0800] “GET /download/ HTTP/1.1” 200 1228
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] “GET /icons/blank.gif HTTP/1.1” 304 -
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] “GET /icons/back.gif HTTP/1.1” 304 -
各参数的详细解释,请参阅:http://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats
> 定义URL的访问控制
可以定义使用的方法:POST GET 等
使用localtion容器可以控制URL的访问控制等。此处是查看服务器的状态
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com
</Location>
配置Apache的CGI脚本
修改配置文件部分:
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
设置CGI的脚本:
[root@miner_k ~]# cd /var/www/cgi-bin/
[root@miner_k cgi-bin]# cat test.sh
#!/bin/bash
cat <<-EOF
Content-Type:text/html #此处需要以下要留一行否则访问会报错
<html>
<h1>
$(/bin/date)
</h1>
</html>
EOF
[root@miner_k cgi-bin]# chmod +x test.sh
设置默认的编码格式
AddDefaultCharset UTF-8
设置PID文件的存放位置
PidFile "/var/run/httpd.pid"