【问题标题】:Multiple sites within one Azure WebRole一个 Azure WebRole 中的多个站点
【发布时间】:2014-12-11 17:34:28
【问题描述】:

目标:这就是为一个 WebRole 实例付费,但要演示/测试多个站点,这些站点是完全独立的 VS 项目(ASP MVC 5,但这并不重要)。站点的区别不是端口号而是域(主机)名称)

也许我想要的太多了,但这可以通过使用 IIS 通过主机名(或 IP 或端口)配置 IIS 站点来轻松完成。

我理解(并且可以接受)这个限制,这些不同的 VS 项目必须一起存在于一个 VS 解决方案中,并且不能独立部署,我想存在一个包含所有配置的通用 Azure 项目元信息。

工具:VS 2013 (Premium) 和 Azure 工具 2.2

现在我有一个包含 2 个项目的解决方案: MySite(一个 ASP MVC 5 项目) MySite.Azure

我想添加第二个 MVC 项目,并想修改 MySite.Azure 中的配置和其他文件以部署 MySite 和 MySite2,我想为 MySite 和 MySite2 分配不同的主机名。 (我确实知道如何使用我的 DNS 提供商将我的主机名分配给我的 Azure IP,请假设这已经完成)


如果无法通过主机名进行区分,是否还可以通过端口号进行区分?

【问题讨论】:

    标签: azure azure-web-roles


    【解决方案1】:

    从头开始

    您不需要将所有项目都放在一个解决方案中,但它确实使事情变得更容易,所以我假设您在这个阶段会这样做。

    将您的第二个项目添加到您的解决方案中。

    在您的 Azure 项目 (MySite.Azure) 上,在 Roles 文件夹中,右键单击并按 Add > Web Role Project In Solution,然后将另一个项目添加到您的 Azure 项目中。

    在您的 ServiceDefinition.csdef 部分中的下一步

    <Site>
       <Site name="Site1" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project1">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain1.com" />
          <Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain1.com" />
        </Bindings>
      </Site>
      <Site name="Site2" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project2">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain2.com" />
          <Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain2.com" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="Endpoint2" protocol="https" port="443" certificate="SSLName" />
    </Endpoints>
    

    这也显示了 SSL 使用的 2 个端点。

    【讨论】:

    • 亚当,谢谢你的回答。作为布丁的证据,我要试试这个。这是一个角色还是两个角色?此外,我当然会为 CPU、带宽等付费,我支付的费用是否与我只有一个站点一样相同
    • 此配置会在您启动的每个角色上加载您的站点。因此,如果您有 2 个 VM 正在运行,则两个站点都将加载到这两个 VM 上并在两者之间进行负载平衡。因此,您支付的费用与单个网站完全相同。如果您只加载 1 个 VM,则它们都加载在 1 个 VM 上。但是,对于正常运行时间 SLA,您需要至少运行 2 个 VM。
    • 好的,谢谢了解。我已经尝试并部署了。现在我收到“HTTP 错误 503。服务不可用”。无论我尝试使用哪个主机名,甚至 IP 或原始 myname.cloudapp.net
    • 访问 myname.cloudapp.net 或 IP 地址根本不起作用,因为每个站点都与一个域名绑定,这是连接到它的唯一方法。我会检查您的 DNS 是否设置正确(将 www.domain1.com 作为 myname.cloudapp.net 的 CNAME) 快速测试它是否正常工作的方法是在本地进入您的 hosts 文件并输入您的 www。 domain1.com 并将其指向 IP 地址。然后你可以先本地测试一下是否是DNS问题。
    • 亚当,谢谢它就像一个魅力。顺便说一句,我通过 ping 主机名来检查 DNS 以检查它是否解析为正确的 IP。问题是我使用了 hostHeader="domainX.com" 但将它输入到浏览器中它会自动转换为 www.domainX.com 并且不匹配。无论如何,再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多