Apace 虚拟主机配置


  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>
Listen 80
</IfDefine>

2.2、修改 httpd-vhosts.conf 配置添加站点信息

# *:80表示响应来自本机所有网卡的80端口的请
<VirtualHost *:80>
# 管理邮箱
ServerAdmin xpample@web01.com
# 设置虚拟域名
ServerName www.web01.com
# 设置网站目录
DocumentRoot /var/www/web01
# 错误日志路径
ErrorLog "/var/log/web01-error_log"
# 成功日志路径
CustomLog "/var/log/web01-access_log" common
# 设定目录访问权限
<Directory /var/www/web01 >
# 定义 deny 和 allow 的先后次序,如下为先检查deny规则,后检查allow规则
Order deny,allow
# 允许/禁止,所有/某个主机访问服务器
# 如:Allow/Deny from all/202.96.0.97 202.96.0.98
allow from all
# Options属性组合,如表
Options FollowSymLinks Indexes Multiviews
# 使用 MultiViews 查询所匹配的文件时所包含的文件类型
MultiviewsMatch Any
# 允许使用 .htaccess 重写修改权限,all/none。
# 避免用户自行修改访问权限,建议设为 None
AllowOverride All
# 允许所有的请求问资源,granted/denied 等
Require all granted
</Directory>
</VirtualHost>
...
<VirtualHost *:80>
# 管理邮箱
ServerAdmin xpample@web02.com
# 设置虚拟域名
ServerName www.web02.com
# 设置网站目录
DocumentRoot /var/www/web02
# 错误日志路径
ErrorLog "/var/log/web02-error_log"
# 成功日志路径
CustomLog "/var/log/web02-access_log" common
# 设定目录访问权限
<Directory /var/www/web02 >
...
</Directory>
</VirtualHost>

2.3、设置域名解析

如果不是公网的域名的话可以通过配置本机的 hosts 来解析 Hosts 文件存储许多常用域名与其对应 IP 的映射。当用户在浏览器中输入一个想要浏览的网址时,系统会首先在 Hosts 文件里面查找有没有对应的 IP,若有的话,则会立即打开对应的网页,若是没有,则会请求DNS服务器进行解析。设置之后重启 Apache 就可以通过 www.web01.com 访问网站目录。

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
127.0.0.1 www.web01.com
...
127.0.0.1 www.web02.com

3、基于 IP 的多站点配置

适用场景:web 服务器存在多块网卡,有多个 IP 地址,设置不同 IP 地址访问不同/相同站点。例如:

3.1、修改 httpd.conf 配置监听 80 端口

<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
Listen 80
</IfDefine>

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 文件

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
192.168.16.125 www.web01.com
...
192.168.16.125 www.web02.com

4、基于端口的多站点配置

适用场景:让同一个IP的不同端口上运行多个站点。例如:

4.1、修改 httpd.conf 配置监听端口

<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
Listen 8081
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
Listen 8082
</IfDefine>

4.3、修改 httpd-vhosts.conf 配置添加站点信息

配置同基于域名,不同在于要设置响应端口 <VirtualHost *:8081><VirtualHost *:8082>

4.4、设置 host 文件

完成后重启 Apache 就可以通过 www.web01.com:8081 访问 web01 ,www.web02.com:8082 访问 web02 。

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
127.0.0.1 www.web01.com
...
127.0.0.1 www.web02.com
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 脚本。


下一篇 年之伊始
上一篇 Nginx 笔记
查看评论