> 技术文档 > 三十二、【Linux网站服务器】搭建httpd服务器演示虚拟主机配置、网页重定向功能

三十二、【Linux网站服务器】搭建httpd服务器演示虚拟主机配置、网页重定向功能


httpd服务器功能演示

      • 一、虚拟主机配置
      • 虚拟主机技术全景
        • 虚拟主机目录规范
        • 1. 基于端口的虚拟主机(8080/8081)
        • 2. 基于IP的虚拟主机(192.168.1.100/192.168.1.101)
        • 3. 基于域名的虚拟主机(site1.com/site2.com)
      • 二、网页重定向配置
        • HTTP 跳转至 HTTPS
      • 命令总结表格
      • 功能作用详解
      • 1.虚拟主机类型对比
      • 2. 虚拟主机配置要点
      • 3. 重定向功能解析

一、虚拟主机配置

虚拟主机技术全景

#mermaid-svg-tjBK2OulCmetSbeW {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-tjBK2OulCmetSbeW .error-icon{fill:#552222;}#mermaid-svg-tjBK2OulCmetSbeW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-tjBK2OulCmetSbeW .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-tjBK2OulCmetSbeW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-tjBK2OulCmetSbeW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-tjBK2OulCmetSbeW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-tjBK2OulCmetSbeW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-tjBK2OulCmetSbeW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-tjBK2OulCmetSbeW .marker.cross{stroke:#333333;}#mermaid-svg-tjBK2OulCmetSbeW svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-tjBK2OulCmetSbeW .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-tjBK2OulCmetSbeW .cluster-label text{fill:#333;}#mermaid-svg-tjBK2OulCmetSbeW .cluster-label span{color:#333;}#mermaid-svg-tjBK2OulCmetSbeW .label text,#mermaid-svg-tjBK2OulCmetSbeW span{fill:#333;color:#333;}#mermaid-svg-tjBK2OulCmetSbeW .node rect,#mermaid-svg-tjBK2OulCmetSbeW .node circle,#mermaid-svg-tjBK2OulCmetSbeW .node ellipse,#mermaid-svg-tjBK2OulCmetSbeW .node polygon,#mermaid-svg-tjBK2OulCmetSbeW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-tjBK2OulCmetSbeW .node .label{text-align:center;}#mermaid-svg-tjBK2OulCmetSbeW .node.clickable{cursor:pointer;}#mermaid-svg-tjBK2OulCmetSbeW .arrowheadPath{fill:#333333;}#mermaid-svg-tjBK2OulCmetSbeW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-tjBK2OulCmetSbeW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-tjBK2OulCmetSbeW .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-tjBK2OulCmetSbeW .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-tjBK2OulCmetSbeW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-tjBK2OulCmetSbeW .cluster text{fill:#333;}#mermaid-svg-tjBK2OulCmetSbeW .cluster span{color:#333;}#mermaid-svg-tjBK2OulCmetSbeW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-tjBK2OulCmetSbeW :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 端口号 IP地址 域名 客户端请求 识别方式 基于端口的虚拟主机 基于IP的虚拟主机 基于域名的虚拟主机 响应8080/8081端口请求 响应不同IP的请求 响应不同域名的请求

虚拟主机目录规范
/var/www/├── site1.com│ ├── public_html # 网站根目录│ ├── logs # 专属日志│ └── cgi-bin # CGI脚本└── site2.com ├── public_html ├── logs └── tmp # 临时文件
1. 基于端口的虚拟主机(8080/8081)
# 创建网站目录[root@localhost ~]# mkdir -p /var/www/{port8080,port8081}# 写入测试页面[root@localhost ~]# echo \"Port 8080 Home\" > /var/www/port8080/index.html[root@localhost ~]# echo \"Port 8081 Home\" > /var/www/port8081/index.html# 创建配置文件[root@localhost ~]# vi /etc/httpd/conf.d/port-vhost.conf# 添加以下内容👇Listen 8080Listen 8081<VirtualHost *:8080> DocumentRoot \"/var/www/port8080\" ErrorLog \"/var/log/httpd/port8080-error.log\"</VirtualHost><VirtualHost *:8081> DocumentRoot \"/var/www/port8081\" ErrorLog \"/var/log/httpd/port8081-error.log\"</VirtualHost># 开放防火墙端口[root@localhost ~]# firewall-cmd --permanent --add-port={8080,8081}/tcp[root@localhost ~]# firewall-cmd --reload[root@localhost ~]# systemctl restart httpd
2. 基于IP的虚拟主机(192.168.1.100/192.168.1.101)
# 添加临时IP[root@localhost ~]# ip addr add 192.168.1.101/24 dev eth0# 创建网站目录[root@localhost ~]# mkdir -p /var/www/{ip100,ip101}[root@localhost ~]# echo \"IP 192.168.1.100\" > /var/www/ip100/index.html[root@localhost ~]# echo \"IP 192.168.1.101\" > /var/www/ip101/index.html# 创建配置文件[root@localhost ~]# vi /etc/httpd/conf.d/ip-vhost.conf# 添加以下内容👇<VirtualHost 192.168.1.100:80> DocumentRoot \"/var/www/ip100\" ServerName 192.168.1.100</VirtualHost><VirtualHost 192.168.1.101:80> DocumentRoot \"/var/www/ip101\" ServerName 192.168.1.101</VirtualHost>[root@localhost ~]# systemctl restart httpd
3. 基于域名的虚拟主机(site1.com/site2.com)
# 创建网站目录[root@localhost ~]# mkdir -p /var/www/{site1,site2}[root@localhost ~]# echo \"Site1 Home\" > /var/www/site1/index.html[root@localhost ~]# echo \"Site2 Home\" > /var/www/site2/index.html# 创建配置文件[root@localhost ~]# vi /etc/httpd/conf.d/domain-vhost.conf# 添加以下内容👇<VirtualHost *:80> ServerName site1.com DocumentRoot \"/var/www/site1\"</VirtualHost><VirtualHost *:80> ServerName site2.com DocumentRoot \"/var/www/site2\"</VirtualHost># 配置本地DNS解析[root@localhost ~]# echo \"127.0.0.1 site1.com site2.com\" >> /etc/hosts[root@localhost ~]# systemctl restart httpd

二、网页重定向配置

HTTP 跳转至 HTTPS
# 启用重写模块[root@localhost ~]# vi /etc/httpd/conf/httpd.conf# 取消注释👇LoadModule rewrite_module modules/mod_rewrite.so# 配置重定向规则[root@localhost ~]# vi /etc/httpd/conf.d/redirect.conf# 添加以下内容👇<VirtualHost *:80> ServerName site1.com RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]</VirtualHost>[root@localhost ~]# systemctl restart httpd

命令总结表格

演示命令 功能描述 关键参数/文件 mkdir -p /var/www/{port8080,port8081} 创建端口虚拟主机目录 -p 递归创建目录 vi /etc/httpd/conf.d/port-vhost.conf 配置端口虚拟主机 Listen 8080 定义监听端口 ip addr add 192.168.1.101/24 dev eth0 添加临时IP地址 dev eth0 指定网卡 vi /etc/httpd/conf.d/ip-vhost.conf 配置IP虚拟主机 IP绑定 echo \"127.0.0.1 site1.com\" >> /etc/hosts 本地DNS解析 /etc/hosts 域名映射 vi /etc/httpd/conf.d/domain-vhost.conf 配置域名虚拟主机 ServerName site1.com 域名标识 vi /etc/httpd/conf.d/redirect.conf 配置HTTP跳转HTTPS RewriteRule (.*) https://... [R=301,L] 301重定向

功能作用详解

1.虚拟主机类型对比

类型 标识方式 适用场景 配置核心指令 基于端口 不同端口(如 80/8080) 测试环境多应用隔离 Listen 8080 + 基于IP 不同IP地址 多IP服务器托管独立网站 基于域名 不同域名(如 site1.com) 单IP多域名网站托管(生产常用) ServerName site1.com

2. 虚拟主机配置要点

# 端口虚拟主机示例Listen 8080<VirtualHost *:8080> DocumentRoot \"/var/www/port8080\" # 必须添加 Listen 指令[1,6](@ref)</VirtualHost># 域名虚拟主机示例<VirtualHost *:80> ServerName site1.com DocumentRoot \"/var/www/site1\" # 需确保域名解析到服务器IP[8](@ref)</VirtualHost>
  • 目录权限控制:
<Directory \"/var/www/site1\"> Require all granted # 允许所有访问 Options -Indexes # 禁止目录列表[7](@ref)</Directory>

3. 重定向功能解析

  • 强制HTTPS跳转
RewriteEngine OnRewriteCond %{HTTPS} off # 检测非HTTPS请求RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  • 域名A跳转到域名B
RewriteCond %{HTTP_HOST} ^old.com$ [NC]RewriteRule ^(.*)$ http://new.com/$1 [R=301,L]