【问题标题】:Add Multiple Domains to one single Web App via code通过代码将多个域添加到单个 Web 应用程序
【发布时间】:2016-06-05 15:51:46
【问题描述】:

我在 Azure 上运行了一个 PHP 应用程序。我希望我的客户能够在他们自己的域上使用我的应用程序。是否可以将多个域添加到一个 Web 应用程序?是否有 API 或其他东西可以以编程方式将域添加到 Web 应用程序?

我有一个如下所示的 web.config 文件,但它没有重定向。

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite domain requests" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^(www.)?([.a-zA-Z0-9]+)$" />
  </conditions>
  <action type="Rewrite" url="http://www.cemiltokatli.com/url={R:1}" appendQueryString="true" />
</rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

【问题讨论】:

    标签: php azure url url-rewriting


    【解决方案1】:

    为此,您需要将您的网络应用程序移至共享/标准模式,并且:

    1) 配置url重写(如here所述)

    2) 使用 Site.HostNames 属性配置多个域名。该属性可用于设置其他域。不幸的是,我没有 PHP 代码 sn-p,但下面是可用的 C# 代码(使用SDK 实现)。而且,不幸的是,官方的Azure PHP SDK 似乎没有提供相同的功能。这里的方法是使用例如下面的 sn-p 作为参考来编写 REST API 包装器。如果您无法执行代码并捕获请求,我可以稍后再做,如果有帮助的话。

    public const string base64EncodedCertificate = "ManagementCertificateValueFromPublishSettingsFile";
    public const string subscriptionId = "AzureSubscriptionId";
    
    static SubscriptionCloudCredentials getCredentials()
    {
        return new CertificateCloudCredentials(subscriptionId, new X509Certificate2(Convert.FromBase64String(base64EncodedCertificate)));
    }
    static void Main(string[] args)
    {
        WebSiteManagementClient client = new WebSiteManagementClient(getCredentials());
    
        WebSpacesListResponse n = client.WebSpaces.List();
        n.Select(p =>
        {
            Console.WriteLine("webspace {0}", p.Name);
            WebSpacesListWebSitesResponse websitesInWebspace = client.WebSpaces.ListWebSites(p.Name,
                  new WebSiteListParameters()
                  {
                  });
            websitesInWebspace.Select(o =>
            {
                Console.Write(o.Name);     
    
                return o;
            }).ToArray();
            return p;
        }).ToArray();
    
        Console.ReadLine();
        var configuration = client.WebSites.Get("WebSpaceName", "WebSiteName", new WebSiteGetParameters());
    
        configuration.WebSite.HostNames.Add("new domain");
        var resp = client.WebSites.Update("WebSpaceName", "WebSiteName", new WebSiteUpdateParameters() { HostNames = configuration.WebSite.HostNames });
        Console.WriteLine(resp.StatusCode);
        Console.ReadLine();
    }
    

    【讨论】:

      【解决方案2】:

      如果我没有误解您的问题,您想管理指向您的一个 Azure Web App 应用程序的多个域。例如。将domain1.comdomain2.com 管理到同一个yourapp.azurewebsites.net

      您可以让您的客户在他自己的 DNS 管理服务器上添加您的 Azure 应用程序的 CName。

      然后,将应用程序的应用服务计划扩展到至少 share 层。在您的 Azure Web App 门户页面的 CONFIGURE 选项卡中,在 domain names 部分下,将您的自定义域添加到列表中。例如。

      如有任何疑问,请随时告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        相关资源
        最近更新 更多