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)
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) |