当前位置: 首页 > news >正文

Apache虚拟主机三种配置实战

一、虚拟主机概述

目的:实现单台服务器部署多个独立站点

三种部署方式:

  1. 相同IP + 不同端口
  2. 不同IP + 相同端口
  3. 相同IP和端口 + 不同域名(FQDN)

示例目标:在服务器上部署 baidu 和 taobao 两个站点


方式1:相同IP + 不同端口

配置步骤:
#安装http插件
yum -y install httpd
#重启服务
systemctl restart httpd
systemctl enable httpd
#关闭selinux
setenforce 0
#进入www目录创建baidu和taobao
cd /var/www
mkdir baidu
mkdir taobao
#向两个站点里写入内容
echo baidu > baidu/index.html
echo taobao > taobao/index.html
1.复制虚拟主机模板
cp -p /usr/share/doc/httpd/httpd-vhosts.conf /etc/httpd/conf.d/
2.修改配置文件
vim /etc/httpd/conf.d/httpd-vhosts.conf

配置内容:

# 全局监听端口(必须在VirtualHost之外)
Listen 80
Listen 8080<VirtualHost 192.168.100.20:80>DocumentRoot "/var/www/baidu"
</VirtualHost><VirtualHost 192.168.100.20:8080>DocumentRoot "/var/www/taobao"
</VirtualHost>
3.重启服务
systemctl restart httpd
systemctl enable httpd
4.防火墙配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#或者
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

方式2:不同IP + 相同端口

配置步骤:
1.添加辅助IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33

添加内容:

IPADDR1=192.168.100.200
PREFIX1=24

重启网络:

systemctl restart network
2.修改虚拟主机配置
<VirtualHost 192.16.100.20:80>DocumentRoot "/var/www/baidu"
</VirtualHost><VirtualHost 192.168.100.200:80>DocumentRoot "/var/www/taobao"
</VirtualHost>
3.重启服务
systemctl restart httpd
systemctl enable httpd
4.防火墙配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#或者
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

方式3:相同IP/端口 + 不同域名

域名规划:

  • baidu → baidu.example.com → 172.16.30.20:80
  • taobao → taobao.example.com → 172.16.30.20:80
配置步骤:
1.DNS服务器配置
vim /var/named/example.com.zone

添加记录:

baidu.example.com.   IN  A  192.168.100.20
taobao.example.com.  IN  A  192.168.100.20

重启DNS服务:

systemctl restart named
2.修改虚拟主机配置
# 启用名称虚拟主机
NameVirtualHost *:80<VirtualHost 192.168.100.20:80>DocumentRoot "/var/www/baidu"ServerName baidu.example.com# 建议添加以下配置防止未匹配域名访问到错误站点ServerAlias www.baidu.example.com
</VirtualHost><VirtualHost 192.168.100.20:80>DocumentRoot "/var/www/taobao"ServerName taobao.example.comServerAlias www.taobao.example.com
</VirtualHost>
3.重启服务
systemctl restart httpd
systemctl enable httpd
4.防火墙配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#或者
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

关键说明:

  1. 端口监听位置
    Listen指令必须放在VirtualHost外部(全局配置区域)

  2. DNS记录格式
    域名解析需使用完整FQDN(如baidu.example.com.),结尾点号不能省略

  3. 名称虚拟主机声明
    基于域名的虚拟主机需要NameVirtualHost *:80声明(Apache 2.2必需,2.4可选但建议保留)

  4. 默认站点防护
    添加_default_虚拟主机块可防止未匹配域名的请求访问到第一个站点:

    <VirtualHost _default_:80>DocumentRoot /var/www/default# 或直接拒绝访问# Redirect 403 /
    </VirtualHost>
    
  5. 防火墙优化
    方式2/3只需开放HTTP服务(80端口),无需单独处理端口

http://www.dtcms.com/a/326899.html

相关文章:

  • 为什么灰度图用G(绿色)通道?
  • Gradient Descent for Logistic Regression|逻辑回归梯度下降
  • 物理服务器内存容量选择:大数据分析场景下的适配指南
  • 互连的带宽
  • 终端安全检测和防御技术
  • 2-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸理论基础与NSE脚本
  • Flutter path_provider的基本使用(读写文件)
  • Android12 Framework电话功能UI定制
  • Mac M1探索AnythingLLM+Ollama+知识库问答
  • Vue.js 样式绑定
  • 【Node.js从 0 到 1:入门实战与项目驱动】2.1 安装 Node.js 与 npm(Windows/macOS/Linux 系统的安装步骤)
  • 派聪明RAG知识库----关于elasticsearch报错,重置密码的解决方案
  • node.js简介
  • 【论文阅读】RestorerID: Towards Tuning-Free Face Restoration with ID Preservation
  • ARM芯片架构之CoreSight SoC-400 组件介绍
  • 高效解耦:自定义内核链表实现指南(简化版)
  • LLM智能:从语言模型到通用智能体的技术跃迁
  • Java多线程基础总结
  • Python类装饰器:优雅解决描述符属性命名难题
  • 内存作假常见方案可行性分析
  • 【15-多类别分类和多标签分类】
  • SSE流式输出分层与解耦、用户自动结束语错误处理
  • 基于FPGA的热电偶测温数据采集系统,替代NI的产品(一)FPGA 测温研究现状
  • 【Python修仙编程】(20) 参悟参数真谛,林羽内力大增
  • 前端工程化:pinia
  • 【Leetcode】随笔
  • 【MATLAB 2025a】安装离线帮助文档
  • 学习嵌入式之IMAX6ULL——GUN工具链+点灯+SDK开发裸机驱动
  • 计算机网络:ovn数据通信都是用了哪些协议?
  • Java String类:不可变性的核心奥秘