本文转自:http://www.linuxidc.com/Linux/2016-09/134827.htm

一、基础配置
实验环境:CentOS 6.8

Apache版本:2.2.15

一、基本配置
1、安装httpd
yum install -y httpd

2、编辑配置文件/etc/httpd/conf/httpd.conf
vim /etc/httpd/conf/httpd.conf

ServerTokens OS        # 服务器相应主机头信息时,显示apache版本和操作系统名称
ServerRoot “/etc/httpd”        #指定服务器主配置文件和日志文件的位置
Timeout 60      #在指定时间内没有收到或发出任何数据则断开连接,单位为秒
KeepAlive On  #是否启用长连接
MaxKeepAliveRequests 100        #当启用长连接时,一次连接最多能相应的请求数量
KeepAliveTimeout 15    #启用长连接时,指定一次连接中相邻两个请求的最大时间间隔,超过这个时间则会断开连接

<IfModule prefork.c>    #使用prefork工作模型
StartServers      8    #刚开启时启动的守护进程数量
MinSpareServers    5    #设置最少空闲进程,当空闲进程少于规定时会创建新的进程
MaxSpareServers  20    #设置最多空闲进程,当空闲进程多于规定时会删除一些
ServerLimit      256    #设置服务器允许最大的同时连接数
MaxClients      256    #设置同一时间允许的最大客户端连接数
MaxRequestsPerChild  4000      #设置每个子进程能处理的最大连接数量
</IfModule>

DirectoryIndex index.html index.html.var        #设置网站默认文档
Include conf.d/*.conf  #将指定文件包含进来
User apache    #设置运行apache服务的用户
Group apache    #设置运行apache服务的组
ServerAdmin root@localhost      #设置管理员的邮箱,当apache服务有问题时会发邮件通知管理员
DocumentRoot “/var/www/html”    #设置存放网页的根目录位置

#设置特定目录的属性
<Directory “/var/www/html”>
Options FollowSymLinks      #FllowSymLinks:允许访问符号链接的文件,即能访问不在本目录内的文件
indexes:      在目录中找不到DirectoryIndex中指定的文件时会生成当前目录的文件列表
MultiViews:  如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。例如,在服务器站点的file文件夹下中存在名为hello.jpg和hello.html的两个文件,此时用户输入tttp://localhost/file/hello,如果在file文件夹下并没有hello子目录,那么服务器将会尝试在file文件夹下查找形如hello.*的文件,然后根据用户请求的具体情况返回最匹配要求的hello.jpg或者hello.html。
AllowOverride None          #不去读取.htaccess配置文件的内容
Order allow,deny            #先执行allow访问控制规则,再执行deny
Allow from all              #放行所有
</Directory>

HostnameLookups Off    #设置服务器记录客户端的IP地址还是主机名,当off时记录IP,为On时记录主机名
ErrorLog logs/error_log        #设置错误日志保存位置

3、启动httpd服务
service httpd start

二、实现用户认证和授权
1、创建认证口令文件,并添加用户linuxidc,密码为123456和用户zsgg,密码为zsgg,密码用md5加密
htpasswd -cm /var/www/html/passwd/test linuxidc 123456
htpasswd -m /var/www/html/passwd/test zsgg zsgg

2、修改认证口令文件的所有者为apache
1 chown apache.apache /var/www/html/passwd/test

3、编辑/etc/httpd/conf/httpd.conf
<Directory “/var/www/html”>
AllowOverride AuthConfig    #启用认证
AuthType basic              #设置认证方式
AuthName “ 请输入用户名密码”    #设置提示信息
AuthUserFile /var/www/passwd/test    #指定认证口令文件
require valid-user            #设置认证口令文件中的所有用户都能访问
</Directory>

三、虚拟目录
编辑/etc/httpd/conf/httpd.conf
Alias /linuxidc “/var/www/linuxidc/”

在客户端输入http://x.x.x.x/linuxidc即可访问到服务器/var/www/linuxidc目录

四、虚拟主机
前提:配置虚拟主机时需将DocumentRoot “/var/www/html” 注释掉
4.1、基于IP地址的虚拟主机

<VirtualHost 192.168.0.1:80>
ServerAdmin root@linuxidc.com
DocumentRoot /www/html/www1.linuxidc.com
ServerName www1.linuxidc.com
ErrorLog logs/www1.linuxidc.com-error_log
CustomLog logs/www1.linuxidc.com-access_log common
</VirtualHost>
<VirtualHost 192.168.0.2:80>
ServerAdmin root@linuxidc.com
DocumentRoot /www/html/www2.linuxidc.com
ServerName www2.linuxidc.com
ErrorLog logs/www2.linuxidc.com-error_log
CustomLog logs/www2.linuxidc.com-access_log common
</VirtualHost>

4.2、基于端口的虚拟主机

<VirtualHost 192.168.0.1:80>
ServerAdmin root@linuxidc.com
DocumentRoot /www/html/www1.linuxidc.com
ServerName www1.linuxidc.com
ErrorLog logs/www1.linuxidc.com-error_log
CustomLog logs/www1.linuxidc.com-access_log common
</VirtualHost>
<VirtualHost 192.168.0.1:8080>
ServerAdmin root@linuxidc.com
DocumentRoot /www/html/www2.linuxidc.com
ServerName www2.linuxidc.com
ErrorLog logs/www2.linuxidc.com-error_log
CustomLog logs/www2.linuxidc.com-access_log common
</VirtualHost>

4.3、基于域名的虚拟主机

1、配置好DNS服务器,使多个域名能解析到同个ip地址上

2、编辑/etc/httpd/conf/httpd.conf

NameVirtualHost 192.168.0.1:80    #启用基于域名的虚拟主机
<VirtualHost 192.168.0.1:80>
ServerAdmin root@linuxidc.com
DocumentRoot /www/html/www1.linuxidc.com
ServerName www1.linuxidc.com
ErrorLog logs/www1.linuxidc.com-error_log
CustomLog logs/www1.linuxidc.com-access_log common
</VirtualHost>
<VirtualHost 192.168.0.1:80>
ServerAdmin root@linuxidc.com
DocumentRoot /www/html/www2.linuxidc.com
ServerName www2.linuxidc.com
ErrorLog logs/www2.linuxidc.com-error_log
CustomLog logs/www2.linuxidc.com-access_log common
</VirtualHost>