|NO.Z.00052|——————————|^^ 部署 ^^|——|Linux&Apache.V03|——|域名跳转|
一、虚拟主机(重点)
### --- 虚拟机:
~~~ 虚拟硬件,真正的操作系统;
~~~ 在一台物理机上来进行多个虚拟主机的部署,达到资源的最大利用率。
### --- 虚拟主机:
~~~ 虚拟空间;
~~~ 虚拟主机,也叫“虚拟空间“,
~~~ 就是把一台运行在互联网上的物理服务器划分成多个”虚拟“服务器,
~~~ 虚拟机主机技术极大的促进了网站技术的应用和普及,
~~~ 同时虚拟主机的租用服务也成了网络时代的一种新型经济技术。
### --- 虚拟主机的分类
~~~ #基于IP的虚拟主机:
~~~ 一台服务器,多个IP,搭建多个网站
~~~ #基于端口的虚拟主机:
~~~ 一台服务器,一个IP,搭建多个网站,每个网站使用不同的端口访问
~~~ #基于域名的虚拟主机:
~~~ 一台服务器,一个IP,搭建多个网站,每个网站使用不同的域名访问
二、Apache实验
### --- 域名解析:准备两个域名
www.yanqiv1.com
www.yanqiv2.com
~~~ 使用本地hosts文件进行解析
[root@server11 ~]# vim /etc/hosts
10.10.10.11 www.yanqiv1.com
10.10.10.11 www.yanqiv2.com
### --- 网站主页目录规划
~~~ 在/htdocs/目录下分别创建yanqivp1和yanqiv2两个目录,
~~~ 并且新建目录内创建index.html文件(分别写不一样的内容)
[root@server11 ~]# mkdir /usr/local/apache2/htdocs/yanqiv1
[root@server11 ~]# mkdir /usr/local/apache2/htdocs/yanqiv2
[root@server11 ~]# vim /usr/local/apache2/htdocs/yanqiv1/index.html
www.yanqiv1.com
[root@server11 ~]# vim /usr/local/apache2/htdocs/yanqiv1/index.htm2
www.yanqiv2.com
### --- 修改主配置文件开启文件关联
[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf
Include etc//extra/httpd-vhosts.conf // 此行取消注释
### --- 编辑子配置文件,编写虚拟主机标签
[root@server11 ~]# vim /usr/local/apache2/etc/extra/httpd-vhosts.conf // 添加以下内容,有几个虚拟主机就写机组(添加之前先把原先存在的示例删除掉)
:23,38s /^/#/ // 23到38行加上注释
#<Directory "/usr/local/apache2/htdocs/yanqiv1"> // 目录权限标签根据需要自行添加,添加用户认证权限
# Options Indexes FollowSymLinks
# AllowOverride None // none是关闭状态,可以设置用户认证及域名跳转
# Require all granted
#</Directory>
<VirtualHost 10.10.10.11:80> // 要监听的网卡地址和端口,若是有很多块网卡的话可以写*
ServerAdmin webmaster@yanqiv1.com // 管理员邮箱
DocumentRoot "/usr/local/apache2/htdocs/yanqiv1" // 这个网站所绑定的网页文件地址
ServerName www.yanqiv1.com // 完整域名
ErrorLog "logs/yanqiv1-error_log" // 错误日志
CustomLog "logs/yanqiv1-access_log" common // 访问日志
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@yanqiv2.com
DocumentRoot "/usr/local/apache2/htdocs/yanqiv2"
ServerName www.yanqiv2.com
ErrorLog "logs/yanqiv2-error_log"
CustomLog "logs/yanqiv2-access_log" common
</VirtualHost>
### --- 重启服务,验证结果
[root@server11 ~]# apachectl -t
Syntax OK
[root@server11 ~]# apachectl restart
~~~ Windows下:浏览器输入两个不同的域名验证网页内容(提前修改windows的hosts文件)
C:\Windows\System32\drivers\etc
10.10.10.11 www.yanqiv1.com
10.10.10.11 www.yanqiv2.com
~~~ 通过Chrome访问www.yanqiv1.com和www.yanqiv2.com
http://www.yanqiv1.com/
www.yanqiv1.com
http://www.yanqiv2.com/
www.yanqiv2.com
~~~ Linux下:通过elinks/curl命令验证:
~~~ elinks/curl URL地址(提前修该linux的hosts文件)
[root@localhost ~]# elinks www.yanqiv1.com
www.yanqiv1.com
[root@localhost ~]# elinks www.yanqiv2.com
www.yanqiv2.com
[root@localhost ~]# curl www.yanqiv1.com
www.yanqiv1.com
[root@localhost ~]# curl www.yanqiv2.com
www.yanqiv2.com
三、域名跳转
### --- 域名跳转
~~~ 一个网站难免会有多个域名,而多个域名总得有一个主次,
~~~ 比如我的网站可以用两个域名访问:www.yanqiv1.com和www.yanqiv2.com
~~~ 但大家发现不管我用那个域名访问,最终都会跳转到www.yanqi.com上来,
~~~ 这个行为就叫做域名的跳转,状态码:301是永久跳转,
~~~ 302是临时跳转(之前的域名出现问题,可以使用该方案)网站上一定要是和值为301,
~~~ 这样对搜索引擎是比较友好的。
~~~ 实验条件
### --- 虚拟主机能正常访问
~~~ 打开主配置文件开启重写模块
[root@localhost ~]# vim /usr/local/apache2/etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so // 取消注释
### --- 实验步骤:
~~~ 修改虚拟主机配置文件
[root@localhost ~]# vim /usr/local/apache2/etc/extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/yanqiv2"> // 把目录改为yanqiv2,对yanqiv2做一个域名跳转
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
### --- 创建匹配文件
[root@localhost yanqiv2]# vim /usr/local/apache2/htdocs/yanqiv2/.htaccess #在指定的网站目录下创建文件,并添加如下内容
:1,9s / // // 取消1到9前面的两个空格
RewriteEngine on
#开启rewrite功能
RewriteCond %{HTTP_HOST} ^www.yanqiv2.com // 若开头访问到是www.yanqiv2.com的地址,
#把以www.yanqi.com 开头的内容赋值给HTTP_HOST变量
RewriteRule ^(.*)$ http://www.yanqiv1.com/$1 [R=permanent,L] // 都匹配到www.yaqniv1.com R=permanent:指的是把跳转规则变为301永久规则,L:表示最后一条规则,最后一条规则生效,再写也会执行。
# ^(.*)$指带客户端要访问的资源
# $1 把 .* 所指代的内容赋值到$1变量中
# R=permanent 永久重定向 = 301
# L 指定该规则为最后一条生效的规则,以后的不在生效
### --- 重启服务器并测试
[root@localhost ~]# apachectl -t
Syntax OK
[root@localhost ~]# apachectl restart
~~~ 通过上述测试,
~~~ 发现无论是yanqiv1或yanqiv2最终都是访问到www.yanqi.com域名上来则试验成功
[root@localhost ~]# curl www.yanqiv1.com // yanqiv1:正常访问到页面
www.yanqiv1.com
[root@localhost ~]# curl www.yanqiv2.com // yanqiv2:会直接跳转到yanqiv1域名;会直接访问到配置信息,curl会加载网页内容
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.yanqiv1.com/">here</a>.</p> // 跳转成了www.yanqiv1.com地址
</body></html>
[root@localhost ~]# elinks www.yanqiv1.com
www.yanqiv1.com // 访问到yanqiv1的页面
[root@localhost ~]# elinks www.yanqiv1.com
www.yanqiv1.com // 跳转到yanqiv1的页面
### --- curl是把页面打印出来了
### --- elinks是解析了跳转页面
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv007-network
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通