httpd多虚拟主机 实例

Apache httpd服务器可以通过IP、端口或完全限定域名(FQDN)实现多虚拟主机功能。2.4版本以后,基于FQDN的虚拟主机不再需要NameVirtualHost指令。配置通常建议存放在独立的配置文件中,可以混合使用多种方式创建虚拟主机。每个虚拟主机必须进行适当的权限设置,确保只有授权的目录可访问。
摘要由CSDN通过智能技术生成

httpd支持在一台主机上实现多个网站,即多虚拟主机
网站的唯一标识:
1、IP相同,但端口不同
2、IP不同,但端口均为默认端口
3、FQDN不同, IP和端口都相同

多虚拟主机有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN,请求报文中首部 Host: www.magedu.com
注意:httpd 2.4版本中,基于FQDN的虚拟主机不再需要NameVirutalHost指令

虚拟主机的基本配置方法:

<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot  "/path"
</VirtualHost>

建议:上述配置存放在独立的配置文件中
其它常用可用指令:

ServerAlias:虚拟主机的别名;可多次使用
ErrorLog: 错误日志
CustomLog:访问日志
<Directory "/path"> </Directory>

范例:基于端口的虚拟主机

mkdir var/www/html
mkdir var/www/html2
mkdir var/www/html3
touch var/www/html/index.html
touch var/www/html2/index.html
touch var/www/html3/index.html

[root@centos8 ~]#cat /etc/httpd/conf.d/test.conf
listen 8001
listen 8002
listen 8003
<virtualhost *:8001>
documentroot /var/www/html
CustomLog logs/website1_access.log combined
<directory /var/www/html>
require all granted
</directory>
</virtualhost>
<virtualhost *:8002>
documentroot /var/www/html2/
CustomLog logs/website2_access.log combined
<directory /var/www/html2>
require all granted
</directory>
</virtualhost>
<virtualhost *:8003>
documentroot /var/www/html3/
CustomLog logs/website3_access.log combined
<directory /var/www/html3>
require all granted
</directory>
</virtualhost>
[root@centos8 ~]#ll /var/log/httpd/
total 44
-rw-r--r-- 1 root root 10679 Dec 10 12:00 access_log
-rw-r--r-- 1 root root 18883 Dec 10 11:59 error_log
-rw-r--r-- 1 root root  1969 Dec 10 12:00 website1_access.log
-rw-r--r-- 1 root root   482 Dec 10 12:00 website2_access.log
-rw-r--r-- 1 root root   482 Dec 10 12:00 website3_access.log

#浏览器访问不同端口,得到不同的页面
http://10.0.0.8:8001/
http://10.0.0.8:8002/
http://10.0.0.8:8003/

范例:基于IP的虚拟主机

[root@centos8 ~]#ip a a 10.0.0.8/24 dev eth0 label eth0:1
[root@centos8 ~]#ip a a 10.0.0.18/24 dev eth0 label eth0:2
[root@centos8 ~]#ip a a 10.0.0.28/24 dev eth0 label eth0:3
[root@centos8 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000
  link/ether 00:0c:29:f9:8d:90 brd ff:ff:ff:ff:ff:ff
  inet 192.168.39.8/24 brd 192.168.39.255 scope global noprefixroute eth0
      valid_lft forever preferred_lft forever
  inet 10.0.0.8/24 scope global eth0
      valid_lft forever preferred_lft forever
  inet 10.0.0.18/24 scope global secondary eth0
      valid_lft forever preferred_lft forever
  inet 10.0.0.28/24 scope global secondary eth0
      valid_lft forever preferred_lft forever
  inet6 fe80::20c:29ff:fef9:8d90/64 scope link
      valid_lft forever preferred_lft forever
[root@centos8 ~]#vim /etc/httpd/conf.d/test.conf
[root@centos8 ~]#cat /etc/httpd/conf.d/test.conf
<virtualhost 10.0.0.8:80>
documentroot /data/website1/
CustomLog logs/website1_access.log combined
<directory /data/website1>
require all granted
</directory>
</virtualhost>
<virtualhost 10.0.0.18:80>
documentroot /data/website2/
CustomLog logs/website2_access.log combined
<directory /data/website2>
require all granted
</directory>
</virtualhost>
<virtualhost 10.0.0.28:80>
documentroot /data/website3/
CustomLog logs/website3_access.log combined
<directory /data/website3>
require all granted
</directory>
</virtualhost>
[root@centos8 ~]#httpd -t
Syntax OK
[root@centos8 ~]#systemctl reload httpd
[root@centos8 ~]#curl 10.0.0.8
/data/website1/index.html
[root@centos8 ~]#curl 10.0.0.18
/data/website2/index.html
[root@centos8 ~]#curl 10.0.0.28
/data/website3/index.html

范例:基于FQDN虚拟主机

<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
<Directory "/www/a.com/htdocs">
ErrorLog "logs/a_error_log"
CustomLog "logs/a_access_log" combined
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
<Directory "/www/b.net/htdocs">
ErrorLog "logs/b_error_log"
CustomLog "logs/b_access_log" combined
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
<Directory "/www/c.org/htdocs">
errorLog "logs/c_error_log"
CustomLog "logs/c_access_log" combined
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

注意:
任意目录下的页面只有显式授权才能被访问
三种方式的虚拟主机可以混和使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值