Apache HTTP Server(简称 Apache )是 Apache 软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器软件之一。虚拟主机( Virtual Host )又称虚拟服务器,是 Apache 在单一主机上实现多网域服务的功能,可以运行多个网站或服务的技术。虚拟主机的实现方式主要有三种:基于域名( Name-based )、基于IP( IP-based )以及基于端口( Port-based )。
1、httpd 配置主要包含三大部分
- Global Environment ——全局配置,决定Apache服务器的全局参数;
- Main server configuration ——主服务配置,相当于是 Apache 的默认 web 站点,如果我们的服务器中只有一个站点,那么就只需要在这里配置就可以了;
- Virtual Hosts ——虚拟主机,虚拟主机不能与 Main Server 主服务器共存,当启用了虚拟主机之后,Main Server 就不能使用了。
要启用虚拟主机需要在 httpd.conf
中取消 httpd-vhosts.conf
注释(去掉#
号),然后在 httpd-vhosts.conf
中配置各个虚拟主机信息。
# Include /private/etc/apache2/extra/httpd-vhosts.conf |
2、基于域名的多站点配置
适用场景:在一个IP地址上运行多个基于域名的站点。
2.1、修改 httpd.conf
配置监听 80 端口
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS> |
2.2、修改 httpd-vhosts.conf
配置添加站点信息
# *:80表示响应来自本机所有网卡的80端口的请 |
2.3、设置域名解析
如果不是公网的域名的话可以通过配置本机的 hosts 来解析 Hosts 文件存储许多常用域名与其对应 IP 的映射。当用户在浏览器中输入一个想要浏览的网址时,系统会首先在 Hosts 文件里面查找有没有对应的 IP,若有的话,则会立即打开对应的网页,若是没有,则会请求DNS服务器进行解析。设置之后重启 Apache 就可以通过 www.web01.com
访问网站目录。
## |
3、基于 IP 的多站点配置
适用场景:web 服务器存在多块网卡,有多个 IP 地址,设置不同 IP 地址访问不同/相同站点。例如:
- 一个为:192.168.16.125 ,对应域名 www.web01.com
- 一个为:192.168.16.126 ,对应域名 www.web02.com
3.1、修改 httpd.conf
配置监听 80 端口
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS> |
3.2、修改 httpd-vhosts.conf
配置添加站点信息
配置同基于域名,不同在于
- 相同 IP 访问相同站点则配置为
<VirtualHost 192.168.16.125:80>
和<VirtualHost 192.168.16.126:80>
- 不同 IP 访问相同站点则配置为
<VirtualHost 192.168.16.125 192.168.16.126:80>
3.3、设置 host 文件
## |
4、基于端口的多站点配置
适用场景:让同一个IP的不同端口上运行多个站点。例如:
- 通过 www.web01.com:8081 访问站点 web01 ;
- 通过 www.web01.com:8082 访问站点 web01 ;
4.1、修改 httpd.conf
配置监听端口
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS> |
4.3、修改 httpd-vhosts.conf
配置添加站点信息
配置同基于域名,不同在于要设置响应端口 <VirtualHost *:8081>
和 <VirtualHost *:8082>
4.4、设置 host 文件
完成后重启 Apache 就可以通过 www.web01.com:8081
访问 web01 ,www.web02.com:8082
访问 web02 。
## |
Options属性 | 说 明 |
---|---|
Indexes | 允许目录浏览,当客户仅指定要访问的目录,但没有指定要访问目录下的哪个文件,而且目录下不存在默认文档时,Apache 以超文本形式返回目录中的文件和子目录列表。 |
MultiViews | 允许内容协商的多重视图,MultiViews 其实是 Apache 的一个智能特性。当客户访问目录 中一个不存在的对象时,如访问 192.168.16.177/icons/a ,则 Apache 会查找这个目录下所有 a.* 文件。由于 icons 目录下存在 a.gif 文件,因此 Apache 会将 a.gif 文件返回给客户,而不是返回出错信息。 |
All | All 包含了除 MultiViews 之外的所有特性,如果没有 Options 语句,默认为 All。 |
ExecCGI | 允许在该目录下执行 CGI 脚本。 |
FollowSymLinks | 可以在该目录中使用符号连接。 |
Includes | 允许服务器端包含功能。 |
IncludesNoExec | 允许服务器端包含功能,但禁用执行 CGI 脚本。 |