httpd.conf配置文件主要由全局环境(Global)、主服务器配置(Main)和虚拟主机(VirtualHost)3个部分组成
 
  
  1. [root@rhel6~]#vi/etc/httpd/conf/httpd.conf

  2. ###Section1:GlobalEnvironment

  3. ServerRoot"/etc/httpd"#工作的根目录

  4. KeepAliveOff#不使用长连接

  5. MaxKeepAliveRequests100#最大请求次数

  6. KeepAliveTimeout15#长连接使用时长

  7. #MPM:MultiPathModules,在linux有三种模式

  8. prefork:预先生成进程,一个请求用一个进程响应,稳定可靠,任何一个进程崩溃了不会影响其他进程,但性能比较差,尤其是在并发量比较大的情况下,消耗量比较多,涉及到大量的进程切换(默认使用的)。

  9. worker:基于线程工作的,一个请求用一个线程响应,web服务器启动多个进程,每个进程生成多个线程。

  10. event:基于事件处理模型的驱动,一个进程处理多个请求,是最强大的。

  11. <IfModuleprefork.c>

  12. StartServers8#服务启动的服务个数

  13. MinSpareServers5#最小空闲进程数

  14. MaxSpareServers20#最大空闲进程数

  15. ServerLimit256#MaxClients的上限,若想调用MaxClients必须先调用这个选项

  16. MaxClients256#最多同时允许多少连接数

  17. MaxRequestsPerChild4000#最大响应次数,若超过该值,则直接kill掉

  18. </IfModule>

  19. <IfModuleworker.c>

  20. StartServers4

  21. MaxClients300

  22. MinSpareThreads25

  23. MaxSpareThreads75

  24. ThreadsPerChild25#每个进程生成线程的数量

  25. MaxRequestsPerChild0

  26. </IfModule>

  27. Listen80#监听所有IP的80端口,可同时监听多个端口

  28. #Listen127.0.0.1:8080#只监听本地的8080端口

  29. LoadModule...

  30. Includeconf.d/*.conf#此目录下的所有.conf文件都是主配置文件的组成部分

  31. Userapache

  32. Groupapache

  33. ###Section2:'Main'serverconfiguration

  34. ServerAdminroot@localhost#服务器管理员邮箱

  35. ServerNamerhel6.vnimos.org:80#在虚拟主机中是必须的,否则会报错

  36. UseCanonicalNameOff#正式名称

  37. DocumentRoot"/var/www/html"#文档根目录

  38. <Directory/>

  39. OptionsFollowSymLinks#定义该目录下的所有网页文件访问选项(包含多个option)

  40. FollowSymlinks允许访问符号链接指向的原文件

  41. Indexes允许索引目录

  42. MultiViews允许内容协商的多重视图

  43. ExexCGI允许在该目录下执行CGI脚本

  44. Includes允许服务器端包含的功能

  45. IncludesNoexec允许服务器端包含的功能,但不能执行CGI脚本

  46. All包含除MultiView之外的所有特性(如果没有options字段,则默认为ALL

  47. AllowOverrideNone

  48. </Directory>

  49. <Directory"/var/www/html">

  50. OptionsIndexesFollowSymLinks

  51. AllowOverrideNone#忽略.htaccess文件中的指令类型

  52. AllowOverrideAll|None|directive-type[directive-type](directive-type包含AuthConfig、FileInfo、Indexes、Limit选项)

  53. None:.htaccess文件将被完全忽略。

  54. All:所有具有".htaccess"作用域的指令都允许出现在.htaccess文件中。

  55. AuthConfig:允许使用与认证授权相关的指令(AuthDBMGroupFile,AuthDBMUserFile,AuthGroupFile,AuthName,AuthType,AuthUserFile,Require,等)

  56. FileInfo:允许使用控制文档类型的指令、控制文档元数据的指令、mod_rewrite中的指令和mod_actions中的Action指令

  57. Indexes:允许使用控制目录索引的指令

  58. Limits:允许使用控制主机访问的指令(Allow,Deny,Order)

  59. Orderallow,deny#访问控制(默认禁止所有用户访问)

  60. #orderdeny,allow#访问控制(默认允许所有用户访问)

  61. Allowfromall

  62. </Directory>

  63. <IfModulemod_userdir.c>

  64. UserDirdisabled

  65. </IfModule>

  66. DirectoryIndexindex.htmlindex.html.var

  67. AccessFileName.htaccess

  68. ###Section3:VirtualHosts#若配置了虚拟主机,则Section2里的配置无效(我们这里配置了虚拟主机,故无需看主服务配置的内容)

  69. NameVirtualHost*:80#开启虚拟主机配置

  70. <VirtualHost*:80>#配置基于域名的虚拟主机

  71. DocumentRoot/var/www/server

  72. ServerNameserver.vm.org

  73. <Directory"/var/www/server">

  74. Orderallow,deny

  75. Allowfrom192.168.0.10#仅允许192.168.0.10的IP访问(其余的都禁止)

  76. </Directory>

  77. </VirtualHost>

  78. <VirtualHost*:80>

  79. DocumentRoot/var/www/html

  80. ServerNamewww.vm.org

  81. <Directory"/var/www/html">

  82. AuthName"SecretPlace"#配置用户认证,认证时显示的名字

  83. AuthTypebasic#基本认证类型

  84. AuthUserFile/etc/httpd/htpasswd#认证用户账号密码文件

  85. Requirevalid-user#只要有效的用户都能登陆

  86. </Directory>

  87. </VirtualHost>

  88. <VirtualHost*:80>

  89. DocumentRoot/var/www/access

  90. ServerNameaccess.xfcy.org

  91. <Directory"/var/www/access">

  92. OptionsALL

  93. AllowOverrideAuthConfig#配置基于.htaccess的用户登录认证

  94. </Directory>

  95. </VirtualHost>

 
    
  1. [root@rhel6~]#mv/var/www/error/noindex.html./#移除该文件便于测试

  2. [root@rhel6~]#cat/var/www/html/index.html

  3. HelloThisiswww.vm.org

  4. [root@rhel6~]#cat/var/www/server/index.html

  5. HelloThisisserver.vm.org

  6. [root@rhel6~]#cat/var/www/access/index.html

  7. HelloThisisaccess.xfcy.org!

  8. [root@rhel6~]#htpasswd-cm/etc/httpd/htpasswduser1#创建用户认证文件(首次创建需加-c选项)

  9. Newpassword:

  10. Re-typenewpassword:

  11. Addingpasswordforuseruser1

  12. [root@rhel6~]#htpasswd-m/etc/httpd/htpasswduser2#添加user2用户

  13. Newpassword:

  14. Re-typenewpassword:

  15. Addingpasswordforuseruser2

  16. [root@rhel6~]#vi/var/www/access/.htaccess#配置基于.htaccess的用户登录认证

  17. Authname"secretplace"

  18. AuthTypeBasic

  19. AuthUserFile/var/www/access/htpasswd

  20. Requirevalid-user

  21. [root@rhel6~]#htpasswd-cm/var/www/access/htpasswduser3#创建用户认证文件

  22. 通过Windows系统访问测试需向"C:\Windows\System32\drivers\etc\hosts"文件添加以下内容:

  23. 192.168.0.90www.vm.org

  24. 192.168.0.90server.vm.org

  25. 192.168.0.90access.vm.org

  26. 同样,Linux系统如未配置DNS进行解析也需向/etc/hosts文件添加以上两行内容

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

231522400.png

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

231404297.png

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

225934557.png

230243321.png

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