当前位置: > Linux服务器 > apache >

http.conf配置详解(配置虚拟主机/用户认证)

时间:2014-11-20 22:39来源:www.it.net.cn 作者:IT
httpd.conf配置文件主要由全局环境、主服务器配置和虚拟主机3个部分组成 

[root@rhel6 ~]# vi /etc/h
### Section 1: Global Environment 
ServerRoot "/etc/httpd"                                 #工作的根目录 
KeepAlive Off                                           #不使用长连接 
MaxKeepAliveRequests 100                                #最大请求次数 
KeepAliveTimeout 15                                     #长连接使用时长 
#MPM: Multi Path Modules,在linux有三种模式 
prefork:预先生成进程 ,一个请求用一个进程响应,稳定可靠,任何一个进程崩溃了不会影响其他进程,但性能比较差,尤其是在并发量比较大的情况下,消耗量比较多,涉及到大量的进程切换(默认使用的)。 
worker:基于线程工作的,一个请求用一个线程响应, web服务器启动多个进程,每个进程生成多个线程。 
event: 基于事件处理模型的驱动,一个进程处理多个请求,是最强大的。 
<IfModule prefork.c> 
StartServers       8                                    #服务启动的服务个数 
MinSpareServers    5                                    #最小空闲进程数 
MaxSpareServers   20                                    #最大空闲进程数 
ServerLimit      256                                    #MaxClients的上限,若想调用MaxClients必须先调用这个选项 
MaxClients       256                                    #最多同时允许多少连接数 
MaxRequestsPerChild  4000                               #最大响应次数,若超过该值,则直接kill掉 
</IfModule> 
<IfModule worker.c> 
StartServers         4 
MaxClients         300 
MinSpareThreads     25 
MaxSpareThreads     75  
ThreadsPerChild     25                                  #每个进程生成线程的数量 
MaxRequestsPerChild  0 
</IfModule> 
Listen 80                                               #监听所有IP的80端口,可同时监听多个端口 
#Listen 127.0.0.1:8080                                  #只监听本地的8080端口 
LoadModule ... 
Include conf.d/*.conf                                   #此目录下的所有.conf文件都是主配置文件的组成部分 
User apache 
Group apache 
 
### Section 2: 'Main' server configuration 
ServerAdmin root@localhost                              #服务器管理员邮箱 
ServerName rhel6.vnimos.org:80                          #在虚拟主机中是必须的,否则会报错 
UseCanonicalName Off                                    #正式名称 
DocumentRoot "/var/www/html"                            #文档根目录 
<Directory /> 
    Options FollowSymLinks                              #定义该目录下的所有网页文件访问选项(包含多个option) 
      FollowSymlinks  允许访问符号链接指向的原文件 
      Indexes         允许索引目录 
      MultiViews      允许内容协商的多重视图 
      ExexCGI         允许在该目录下执行CGI脚本 
      Includes        允许服务器端包含的功能 
      IncludesNoexec  允许服务器端包含的功能,但不能执行CGI脚本 
      All             包含除MultiView之外的所有特性(如果没有options字段,则默认为ALL) 
    AllowOverride None 
</Directory> 
<Directory "/var/www/html"> 
    Options Indexes FollowSymLinks 
    AllowOverride None                                   #忽略.htaccess文件中的指令类型 
      AllowOverride All|None|directive-type [directive-type](directive-type包含AuthConfig、FileInfo、Indexes 、Limit选项) 
      None        :.htaccess 文件将被完全忽略。 
      All         :所有具有 ".htaccess" 作用域的指令都允许出现在 .htaccess 文件中。 
      AuthConfig  :允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等) 
      FileInfo    :允许使用控制文档类型的指令、控制文档元数据的指令、mod_rewrite中的指令和mod_actions中的Action指令 
      Indexes     :允许使用控制目录索引的指令 
      Limits      :允许使用控制主机访问的指令(Allow, Deny, Order) 
    Order allow,deny                                     #访问控制(默认禁止所有用户访问) 
   #order deny,allow                                     #访问控制(默认允许所有用户访问) 
    Allow from all 
</Directory> 
<IfModule mod_userdir.c> 
    UserDir disabled 
</IfModule> 
DirectoryIndex index.html index.html.var 
AccessFileName .htaccess 
 
 
### Section 3: Virtual Hosts                             #若配置了虚拟主机,则Section2里的配置无效(我们这里配置了虚拟主机,故无需看主服务配置的内容) 
NameVirtualHost *:80 
<VirtualHost *:80> 
        DocumentRoot /var/www/server
        ServerName server.vm.org 
        <Directory "/var/www/server"> 
                Order allow,deny 
                Allow from 192.168.0.10                  #仅允许192.168.0.10的IP访问(其余的都禁止) 
        </Directory>              
</VirtualHost> 
 
<VirtualHost *:80> 
        DocumentRoot /var/www/html 
        ServerName www.vm.org 
        <Directory "/var/www/html"> 
                AuthName "Secret Place"                  #配置用户认证,认证时显示的名字 
                AuthType basic                           #基本认证类型 
                AuthUserFile /etc/httpd/htpasswd         #认证用户账号密码文件 
                Require valid-user                       #只要有效的用户都能登陆  
        </Directory> 
</VirtualHost> 
 
<VirtualHost *:80>
DocumentRoot /var/www/access
ServerName access.xfcy.org
<Directory "/var/www/access">
Options ALL
AllowOverride AuthConfig                 #配置基于.htaccess的用户登录认证
</Directory>
</VirtualHost>

[root@rhel6 ~]# mv /var/www/error/noindex.html ./        #移除该文件便于测试  
[root@rhel6 ~]# cat /var/www/html/index.html    
Hello This is www.vm.org   
[root@rhel6 ~]# cat /var/www/server/index.html          
Hello This is server.vm.org   
[root@rhel6 ~]# cat /var/www/access/index.html 
Hello This is access.xfcy.org! 
[root@rhel6 ~]# htpasswd -cm /etc/httpd/htpasswd user1   #创建用户认证文件(首次创建需加-c选项)    
New password:      
Re-type new password:      
Adding password for user user1     
[root@rhel6 ~]# htpasswd -m /etc/httpd/htpasswd user2    #添加user2用户   
New password:     
Re-type new password:     
Adding password for user user2    
  
[root@rhel6 ~]# vi /var/www/access/.htaccess             #配置基于.htaccess的用户登录认证 
Authname        "secret place" 
AuthType        Basic 
AuthUserFile    /var/www/access/htpasswd 
Require         valid-user 
[root@rhel6 ~]# htpasswd -cm /var/www/access/htpasswd user3   #创建用户认证文件 
  
通过Windows系统访问测试需向"C:\Windows\System32\drivers\etc\hosts"文件添加以下内容:  
192.168.0.90    www.vm.org  
192.168.0.90    server.vm.org 
192.168.0.90    access.vm.org  
同样,Linux系统如未配置DNS进行解析也需向/etc/hosts文件添加以上两行内容  

当IP地址为192.168.0.1的用户通过http://server.vm.org访问的时候,将提示无法权限访问

\

IP地址为192.168.0.10的用户可通过http://server.vm.org成功访问

\

通过http://www.vm.org访问的时候,将提示需要输入用户名密码才可登录系统

\

\

通过http://access.vm.org访问的时候,也提示需要输入用户名密码才可登录系统
\
\

(责任编辑:IT)
------分隔线----------------------------