15053971836 注册 / 登录

apache多个站点

时间: 阅读:304
apache多个站点

最佳回答

抹不掉的回忆

抹不掉的回忆

2023-01-13 07:02:08

很多人常常看到一台服务器上跑多个站点,不同的域名访问不同的站点,就会有个疑惑:访问的时候并没有在地址栏中加入端口号,多个域名都是解析到这个服务器的IP地址,服务器怎么能够正确的分辨和解析呢?

其实还是对http协议不够了解,看下图一切一目了然

对应的在apache中有rewite和proxy模块,它们就是为了完成这些任务, 一台服务上我们配置多个 vhost,必然需要端口号,
比如:
a.com :80
b.com :8080

实际访问的时候 www.a.com 自动转发到80端口, www.b.com 则自动转发到8080端口。

网站 1:

网站 2:

这样一个服务器的 80 端口上就跑起两个站点.

没事找了个虚拟主机来试用,尝试用给的IP地址访问怎么都访问不了,一直都显示

后来仔细一想,虚拟主机是需要依赖域名的,不然没办法区分vhost,后来找到测试的域名果然可以正常访问了。

最新回答共有5条回答

  • 游客
    回复
    2023-01-13 10:10:20

    首先帮题主梳理一下几个名词之间的关系,再回答题主的问题。

    服务器

    现在我们说起服务器,可能是指一台物理机,也可能是一台虚拟机,也可能是云服务商的一个容器(docker)。如果是物理机,由于物理机性能都非常好,一般都会在服务器上部署多个网站。而虚拟机和容器本身就是一种资源划分的手段,一般只会在一个虚拟机或容器里部署一个网站。所以服务器和网站的关系是1比1-N。

    IP、网卡、服务器

    服务器上部署了网站,想要网站能被外界访问需要一个公网IP。而网卡就是绑定IP,提供数据传输能力的硬件。网卡与IP的关系是1比1,一个服务器可以插多个网卡。

    域名、IP

    有了IP,实际上用户就可以访问到网站了,但IP地址不容易记,所以就有了域名。通过DNS可以实现域名到IP的解析。一个域名可以绑定多个IP,假设的域名绑定了100个IP,通过DNS的负载均衡策略,每次解析返回的IP地址都可能不一致。

    题主的问题:Q1

    第一问题其实是,假设我只有一个公网IP,但我有100台服务器部署了网站,要如何部署才能让用户的请求平均分配到这100台机器上。给一种比较简单的方式:

    公网IP绑定的机器是一台反向代理(Nginx),反向代理跟后端的100台机器保持长连接检查机器状态,有请求进来时,根据负载均衡策略从100台机器中选择一台处理请求。用户能感知到的机器就是反向代理一台(一个IP),但实际提供服务的是后端的100台机器。

    题主的问题:Q2

    虚拟机商在分配机器时,如果你选择了独立IP,每台机器都有独立的虚拟网卡,每个网卡都有自己的IP。

    题主的问题:Q3

    正常情况下一个公网IP只会绑定一台机器。

  • 無畏
    回复
    2023-01-13 10:10:20

    域名简单的说就一个网站地址,这个地址是唯一的。

    主机服务器就是用来运行网站程序和储存数据的。

    IP是服务器地址。

    网卡是服务器与外界链接一个出口。

    网站是运行在服务器上的程序。

    它们之间的关系是:IP和域名是绑定在服务器上,域名通过DNS服务器指向IP地址上,这样输入域名就可以访问到服务器。


    Q1:这些大型网站有一个主服务器和很多加速服务器。我们一般访问到是加速服务器上的缓存数据。

    Q2:通过网站运行环境,如IIS。每个域名在绑定在IIS,然后通过IIS指向对应的虚拟目录。

    Q3:1个IP只能对应一台主机。

  • 清风若雨
    回复
    2023-01-13 10:10:20

    关于域名、服务器、IP、网卡与网站之间的关系,如果要梳理清楚,那就要先向你介绍一下WEB工作流程。

    WEB工作流程,用户访问网站过程中经历了哪些流程?
    用户打开浏览器 -> 输入域名 -> 回车 -> 网页内容在用户浏览器上显示出来。

    上面的流程是用户在表象层上的感知,但在技术层上,远远不止这些流程,具体流程如下(以下流程也仅仅是精简流程,技术要做的工作远不止这些):
    用户打开浏览器 -> 输入域名 -> 回车后,用户系统本地会对此域名进行解析 -> 找到此域名对应的IP -> 然后定位到要访问网站的远程服务器 -> 浏览器发送请求(要获取哪个页面) -> 远程服务器接收到请求后,将页面发送给用户浏览器 -> 用户浏览器解析页面HTML进行渲染 -> 页面最终展现在用户眼前。

    关系梳理

    服务器(硬件)
    服务器做为硬件设备,网站是要部署在服务器之上的,所以少了硬件的支持,就谈不上网站。

    网卡(硬件)
    网卡做为电脑上的硬件设备,要上网就离不开网卡,不管是客户端(用户的电脑)还是网站服务器,如果少了网卡,联网这辈子都是不可能的了。

    IP
    有了电脑/服务器、网卡,接入运营商网络后,网络运营商就会给你分配一个全世界独一无二的公网IP,以此来定位客户端电脑和服务器端。
    IP可以理解为人的身份证,在互联网上代表某台机器的唯一编码。

    域名

  • 無畏
    回复
    2023-01-13 09:09:10

    配置多个站点就是启用虚拟主机,把httpd.conf这个配置文件里面有
    # Virtual hosts
    #Include conf/extra/httpd-vhosts.conf
    这个前面的#号取消掉,然后每一个站点放在httpd-vhosts.conf这里面就可以了。