设为首页 收藏本站
查看: 807|回复: 0

[经验分享] Apache 默认虚拟主机

[复制链接]

尚未签到

发表于 2018-11-17 12:00:55 | 显示全部楼层 |阅读模式
DSC0000.jpg

DSC0001.jpg

  上一节中说到,在 /usr/local/apache2.4/htdocs/ 下面可以访问到 1.php 和 index.html 这两个文件,这是为什么呢?
  输入命令 vim /usr/local/apache2.4/conf/httpd.conf,搜索 /htdocs,回车,见下图,
DSC0002.jpg

  上图红色框框的内容显示,就是因为参数 DocumentRoot 定义了网站的目录在哪里。接着搜索 /ServerName,回车,见下图,
DSC0003.jpg

  上图红色框框的内容显示,因为参数 ServerName 定义了网站的域名,只不过这个 ServerName 可以用任何域名去访问。
  Windows 和 Linux 的 htdocs 基本上是相似的,所以这边先演示一下,怎么在Windows上写htdocs,hosts 的文件路径见下图,
DSC0004.jpg

  右击 hosts 文件,选择打开方式,再选中记事本,点击确定,进入见下图,
DSC0005.jpg

  增加一行 IP 地址和域名,见下图红色框框,
DSC0006.jpg

  然后保存。保存这边会有一些问题 ,需要管理员权限才可以保存,这边可以尝试,复制一个文件到桌面上,然后进行上面的更改,再把原文件删除掉,把桌面上的更改好的文件放进去。
  完成之后,打开Windows的cmd,尝试ping一下这两个域名,见下图,
DSC0007.jpg

  可以看到,IP 是192.168.218.128,没错了。正常情况下,不更改hosts文件的话,看到的就是下图这种情况了,
DSC0008.jpg

  可以看到,IP 地址明显就变成官网的 IP 了。
  以上就是hosts这个文件的作用,可以访问到指向的IP。这个情况在DNS还没有生效的时候可以使用。
  在 www.abc.com 域名指向 192.168.218.128 这个 IP 的时候,来访问一下这个网站,见下图,
DSC0009.jpg

  出现的也是“It works!”,接着访问一下,www.abc.com/1.php ,回车,见下图,
DSC00010.jpg

  包括 www.123.com/1.php ,也是一样的,见下图,
DSC00011.jpg

  上面操作的这两个域名和IP地址,我们都没有到配置文件里去定义,仅仅只是定义了 ServerName www.example.com:80 这个域名,为什么都可以访问?
DSC00012.jpg

  这个就叫做 apache 的默认主机,也就是说任何一个域名,只要指向了这个 IP,都会访问到这个站点,这个站点就叫做默认虚拟主机。如果没有做任何操作,仅仅使用的是 httpd.conf 配置文件里面定义的这个 ServerName www.example.com:80 以及 DocumentRoot,
DSC00013.jpg

  这样就会不太好管理,毕竟一台服务器可以跑多个域名,不一定要指向到这边。所以,我们需要打开一个虚拟主机的配置文件,输入命令 vim /usr/local/apache2.4/conf/httpd.conf,搜索 /extra,回车,找到下图,
DSC00014.jpg

  红色框框里面就是虚拟主机,把下面那行的#号去掉,保存并退出。也就是说,前面的 htdocs、DocumentRoot 和 ServerName 等全部不用了,因为这一个配置文件里面只能定义一个 ServerName,肯定是不合适的。
  现在打开一个二级配置文件,就是虚拟主机的配置文件,在这个配置文件里是可以定义多个 ServerName,输入命令 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,回车,往下翻,见下图,
DSC00015.jpg

  两个框框的内容都是以  开头,以  结尾,表示一个主机,也就是一个网站。这边需要做一些更改,ServerAdmin 用来定义管理员的邮箱,要不要都无所谓,可以删掉。DocumentRoot 定义网站和目录在哪里,可以重新定义。ServerName 定义网站的域名,只能写一个域名。ServerAlias 定义网站的别名,可以写多个域名。ErrorLog 指定错误日志,CustomLog 指定访问日志。这样子就定义了一个网站,具体见下图,
DSC00016.jpg

  保存并退出,这边定义的虚拟主机,一旦生效,之前在 httpd.conf 里定义的 www.example.com 就失效了。
DSC00017.jpg

  接着完善一下刚才的设置,见下图,
DSC00018.jpg

  现在需要在对应的站点根目录下创建一个文件,输入命令 vim /data/wwwroot/abc.com/index.php ,回车,见下图,
DSC00019.jpg

  输入上图的内容,保存并退出。输入命令 vim /data/wwwroot/111.com/index.php ,回车,见下图,
DSC00020.jpg

  保存并退出。然后检查一下配置文件的语法,再加载配置文件。
DSC00021.jpg

  以上准备工作就完成了,接下来测试一下虚拟主机。
  首先,如果域名没有绑定到 htdocs 上,ping 的时候就会连接到外网去,并没有在本机内网上,见下图,
DSC00022.jpg

  所以,要想访问 www.abc.com 这个网站在本机上,可以编辑 vi /etc/hosts,指定一下。还有另一种办法,这边介绍一个新命令 curl,-x 选项,输入命令 curl -x192.168.218.128:80 abc.com ,回车,见下图,
DSC00023.jpg

  效果非常明显,无论什么域名指向过来,访问的都是 abc.com,是虚拟主机配置里面的第一个虚拟主机,就是默认的虚拟主机。所谓默认虚拟主机,就是访问什么域名,只要解析到这个 IP 上,都会访问这个网站,访问这个网站对应的虚拟主机配置,也就是 abc.com。接着访问一下 example.com,见下图,
DSC00024.jpg

  这边111.com 是第二个虚拟主机的域名,访问的 www.111.com ,并不是 111.com 的域名,所以访问到了第一个虚拟主机上去。只要搜索的域名不在我们设置的配置上,就会匹配到第一个虚拟主机上。第一个就叫做默认的虚拟主机配置文件。
  这边我们也可以发现,只要开启了这边 VirtualHost 配置文件的虚拟主机,之前 httpd.conf 配置文件上的ServerName 和 DocmentRoot都会失效。
  以上这么多内容就两个结论:
  (1)、在主配置文件 httpd.conf 中,打开了 VirtualHost 虚拟主机的配置文件,这时候虚拟主机配置文件就生效了,而主配置文件里所定义的ServerName 和 DocmentRoot就会失效。
  (2)、虚拟主机配置文件,一旦打开,里面可以定义很多个 VirtualHost 虚拟主机的配置文件,每个 VirtualHost 里面都有对应的 ServerName 和 DocmentRoot,每个 VirtualHost 都代表一个站点,都是一个虚拟主机。在虚拟主机里边有个比较特殊的情况,存在一个默认的虚拟主机,就是无论任何域名,只要不在其他虚拟主机上,就会解析到这个 IP上,都会访问到这个默认虚拟主机。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636196-1-1.html 上篇帖子: Apache 和 PHP 结合 下篇帖子: Apache的相关优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表