Linux-开启Apache的虚拟主机功能(基于IP地址、基于主机域名、基于IP:端口号)

一台服务器要是只能部署一个网站,那就难免有些浪费了。Apache服务的虚拟主机功能可以基于ip地址主机域名端口号来访问网站,这样就可以实现在一台服务器上部署多个网站了。

虚拟主机功能

  1. 把一台处于运行状态的物理服务器分割成多个“虚拟服务器”
  2. 无法实现硬件资源隔离,仅能限制硬盘的使用空间大小。
  3. Apache的虚拟主机功能是服务器基于用户请求的不同ip地址主机域名端口号,实现提供多个网站同时为外部提供访问服务的技术。【用户请求的资源不同,最终获取的网页内容也不同】

基于IP地址访问网站

  1. 使用nmtui为虚拟机配置3个ip地址,分别为:
    192.168.10.10
    192.168.10.20
    192.168.10.30
    在这里插入图片描述
    重启网络服务,并测试网络连通性:
    在这里插入图片描述
  2. 修改网站数据目录为/home/www/html【若不修改网站数据目录,可以省略该步骤】
    在这里插入图片描述
  3. 在网站数据目录/home/www/html下创建3个子目录,分别存放3个网站的数据。并分别写入各自的内容到默认首页index.html
    在这里插入图片描述
  4. 修改httpd服务的配置文件,以支持虚拟主机功能。修改完后要重启httpd服务。

AllowOverride【配置成不允许apache读取.htaccess文件的内容】
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成“None”不允许任何Override(优先级)。

Require【访问资源限制,谁能访问资源】
Require all granted 允许所有请求访问资源
Require all denied 拒绝所有请求访问资源

# 配置文件/etc/httpd/conf/httpd.conf
# 从113行开始写入以下内容
<VirtualHost 192.168.10.10>   【指定ip的虚拟主机】
DocumentRoot "/home/www/html/10"   【网站数据目录】
ServerName "www.abong.com"  【网站服务器的域名】
<Directory "/home/www/html/10" >    【网站数据目录的信息】
AllowOverride None
Require all granted
</Directory>
</VirtualHost>


<VirtualHost 192.168.10.20>
DocumentRoot "/home/www/html/20"
ServerName "bbs.abong.com"
<Directory "/home/www/html/20" >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>


<VirtualHost 192.168.10.30>
DocumentRoot "/home/www/html/30"
ServerName "tech.abong.com"
<Directory "/home/www/html/30" >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
  1. 打开firefox,输入网址:192.168.10.10,显示如下:
    在这里插入图片描述
    看过我其他博客的人,估计可以看出,肯定又是selinux安全上下文没有配置好。

  2. 为网站数据目录/home/www/html及其目录下的文件添加selinux安全上下文,以支持httpd服务。
    查询下网站数据目录的selinux安全上下文,可以看到不是httpd服务所支持的,要修改。
    在这里插入图片描述
    从下图可以看到已修改好了
    在这里插入图片描述

  3. 再次打开网站,可以看到已经能够正常显示输入的内容了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    至此,我们终于可以通过不同的ip地址去访问到不同的网站了。

基于主机域名访问网站

如果觉得ip地址太难记,或者ip地址不够用,可以考虑使用主机域名访问网站。可以通过不同的主机域名,去定位同一个ip地址来访问网站。在这里选取ip地址为:192.168.10.10

  1. 将多个主机域名和ip地址进行绑定关联【配置文件:/etc/hosts
    主机域名:
    www.abong.com
    bbs.abong.com
    tech.abong.com
    在这里插入图片描述
  2. 通过主机域名检查网络连通性,不用重启网络服务可直接验证。
    在这里插入图片描述
  3. 配置网站数据目录为/home/www/html,并创建3个子目录分别存放3个网站的数据。过程可参考"基于IP地址访问网站",这里只给我配置结果并调整好selinux安全上下文的问题。配置好后重启httpd服务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 修改httpd服务的配置文件,以支持虚拟主机功能。修改完后要重启httpd服务。
# 配置文件/etc/httpd/conf/httpd.conf
# 从113行开始写入以下内容
<VirtualHost 192.168.10.10>
DocumentRoot "/home/www/html/www"
ServerName  "www.abong.com"
<Directory "/home/www/html/www">
AllowOverride None
Require all granted
</directory> 
</VirtualHost>

<VirtualHost 192.168.10.10>
DocumentRoot "/home/www/html/bbs"
ServerName  "bbs.abong.com"
<Directory "/home/www/html/bbs">
AllowOverride None
Require all granted
</directory> 
</VirtualHost>

<VirtualHost 192.168.10.10>
DocumentRoot "/home/www/html/tech"
ServerName  "tech.abong.com"
<Directory "/home/www/html/tech">
AllowOverride None
Require all granted
</directory> 
</VirtualHost>
  1. 打开firefox,验证结果。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

基于IP地址:端口号访问网站

若是ip地址不够用,但是又不想使用主机域名,则可以使用ip地址:端口号的方式来访问网站。

  1. ip地址和端口号
    IP地址:192.168.10.10
    端口号:81118222

  2. 在网站数据目录/home/www/html下创建两个目录用于存放数据,并写入相关的内容。配置好相关的selinux安全上下文
    在这里插入图片描述

  3. 修改httpd服务的配置文件,添加监听8111和8222的端口号的参数
    在这里插入图片描述

  4. 修改httpd服务的配置文件,以支持虚拟主机功能。修改完后要重启httpd服务。

# 配置文件/etc/httpd/conf/httpd.conf
# 从113行开始写入以下内容
<VirtualHost 192.168.10.10:8111>   【ip:端口号】
DocumentRoot "/home/www/html/8111"  【网站数据目录】
ServerName "www.abong.com"  【网站服务器的域名】
<Directory "/home/www/html/8111">   【网站数据目录的信息】
AllowOverride None
Require all granted
</Directory> 
</VirtualHost>

<VirtualHost 192.168.10.10:8222>
DocumentRoot "/home/www/html/8222"
ServerName "bbs.abong.com"
<Directory "/home/www/html/8222">
AllowOverride None
Require all granted
</Directory> 
</VirtualHost>
  1. 在重启httpd服务的时候报错了,说是selinu安全子系统的问题。估计又是selinux安全上下文的问题。
    在这里插入图片描述
    SElinux服务会检测到8111、8222这两个端口是不属于Apache服务应有的资源,但是却以httpd服务程序的名义监听使用了,故SELinux会拒绝Apache服务使用这两个端口。
    semanage port -l | grep http 【查询与HTTP协议相关且SELinux服务允许的端口列表】
    在这里插入图片描述
    semanage port -a -t http_port_t -p tcp 8111 【添加端口号8111到与HTTP协议相关且SELinux服务允许的端口列表】
    semanage port -a -t http_port_t -p tcp 8222【添加端口号8222到与HTTP协议相关且SELinux服务允许的端口列表】
    在这里插入图片描述
    在这里插入图片描述
    6.再次重启httpd服务,可以正常重启,打开firefox,验证如下:
    在这里插入图片描述
    在这里插入图片描述

以上就是使用Apache的虚拟主机功能实现基于ip地址主机域名端口号来访问网站的全部内容了。感谢大家的关注!!!

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置和管理Apache服务器需要以下步骤: 1. 安装Apache服务器软件 在Linux系统中,可以使用apt-get、yum等命令来安装Apache服务器软件。以Ubuntu系统为例,在终端中运行以下命令进行安装: ``` sudo apt-get update sudo apt-get install apache2 ``` 2. 配置Apache服务器 打开Apache服务器的主配置文件/etc/apache2/apache2.conf,在其中进行以下设置: - 定义Apache服务器的监听地址和端口: ``` Listen 80 ``` - 定义Apache服务器的默认网站根目录: ``` DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ``` 3. 启动Apache服务器 完成以上配置后,使用以下命令启动Apache服务器: ``` sudo service apache2 start ``` 4. 配置防火墙 如果Apache服务器所在的Linux系统中启用了防火墙,需要配置防火墙允许HTTP流量通过。可以使用以下命令配置防火墙: ``` sudo ufw allow http ``` 其中,http指的是80端口,如果需要使用其他端口,需要将http改为对应的端口号。 5. 配置虚拟主机 Apache服务器支持配置多个虚拟主机,以实现多个网站共享同一个服务器资源的功能。可以基于IP地址域名端口号来配置虚拟主机。以下分别介绍这三种配置方式: - 基于IP地址虚拟主机: 在Apache服务器的主配置文件/etc/apache2/apache2.conf中添加以下内容: ``` NameVirtualHost 192.168.1.100:80 <VirtualHost 192.168.1.100:80> ServerName www.example.com DocumentRoot /var/www/example </VirtualHost> ``` 其中,NameVirtualHost用于定义虚拟主机IP地址端口号,VirtualHost用于定义虚拟主机的详细配置。在上述配置中,虚拟主机IP地址为192.168.1.100,域名为www.example.com,网站根目录为/var/www/example。 - 基于域名虚拟主机: 在Apache服务器的主配置文件/etc/apache2/apache2.conf中添加以下内容: ``` <VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example </VirtualHost> ``` 其中,*表示匹配任意IP地址,ServerName用于定义虚拟主机域名,ServerAlias用于定义虚拟主机的别名,DocumentRoot用于定义虚拟主机的网站根目录。 - 基于端口号虚拟主机: 在Apache服务器的主配置文件/etc/apache2/apache2.conf中添加以下内容: ``` Listen 8080 <VirtualHost *:8080> ServerName www.example.com DocumentRoot /var/www/example </VirtualHost> ``` 其中,Listen用于定义Apache服务器的监听端口,VirtualHost用于定义虚拟主机的详细配置,在上述配置中,虚拟主机端口号为8080,域名为www.example.com,网站根目录为/var/www/example。 6. 重启Apache服务器 完成以上配置后,使用以下命令重启Apache服务器: ``` sudo service apache2 restart ``` 以上就是配置和管理Apache服务器的具体步骤和详解,以及配置基于IP地址域名端口号虚拟主机的方法。注意,在实际配置中,还需要根据实际情况进行调整和优化,以提高Apache服务器的安全性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值