httpd的配置详解(二)

来源:互联网 发布:驾校预约考试软件 编辑:程序博客网 时间:2024/06/06 05:06

部署环境(关闭防火墙、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 FollowSymLinksAllowOverride NoneOrder allow,denyAllow 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 user1htpasswd   -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    user2Require  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/bashcat <<-EOFContent-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"
0 0