对于我的Angular应用程序,这里是app.routing.ts文件:
const appRoutes: Routes = [
{ path: '', component: LoginComponent },
{ path: 'dashboard', component: DashboardComponent },
{ path: 'application', component: ApplicationComponent },
{ path: 'decision', component: DecisionComponent },
];
export const routing = RouterModule.forRoot(appRoutes);
Run Code Online (Sandbox Code Playgroud)
所以在我的本地计算机上,当我进行服务时,我可以转到浏览器中的地址栏并键入以下地址:
本地主机:4200 /仪表板
本地主机:4200 /应用
这很有效.
然后我做:
ng build --base-href /deploy/ --prod
Run Code Online (Sandbox Code Playgroud)
然后将文件从本地计算机上的dist文件夹复制到Azure Blob存储.我必须有一个文件的blob容器,该容器称为deploy.我最终得到的结果如下:
https://xxyz.blob.core.windows.net/deploy/favicon.ico
https://xxyz.blob.core.windows.net/deploy/index.html
https://xxyz.blob.core.windows.net/deploy/assets/Logo.svg
https://xxyz.blob.core.windows.net/deploy/main.68dbes8ef20.bundle.js
https://xxyz.blob.core.windows.net/deploy/styles.a2b9daa6d36.bundle.css
Run Code Online (Sandbox Code Playgroud)
我等可以去:
https://xxyz.blob.core.windows.net/deploy/favicon.ico
Run Code Online (Sandbox Code Playgroud)
并看到图标
然后,在Verizon Edgecast CDN上,我可以去:
https://xxyz.com/deploy/index.html启动我的应用并登录.
但我不想在CDN上访问https://xxyz.com/deploy/index.html进行登录.
我想去
另外,我不能去CDN上的这些地方:
https://xxyz.com/deploy/dashboard
https://xxyz.com/deploy/application
我真正想要的是能够从CDN做到这一点:
我有存储在Azure的blob存储中的文件.最终用户将通过Internet下载这些文件.注册用户将能够通过CDN高速下载它们,而我希望非注册用户限制其下载.
我如何在Azure中执行此操作?
我想将我的ReactJS 应用程序作为静态托管在 Azure Blob 上。问题是 Azure Blob 不支持默认文档。为了克服这个问题,我设置了带有 URL 重写规则的 Azure CDN
((?:[^\?]*/)?)($|\?.*)$1index.html$2((?:[^\?]*/)?[^\?/.]+)($|\?.*)$1/index.html$2这是来自Hao的教程
这成功解决了myapp.azureedge.net,但是当直接使用客户端路由时,例如myapp.azureedge.net\react\route应用程序将返回ResourceNotFound.
这意味着当用户输入myapp.azureedge.net\react\routeURL 并尝试导航到该页面时,他会收到错误消息。
我怀疑我需要将每个路径(不是静态特定文件)重定向到index.html. 但是,我不知道这是否是正确的解决方案或如何实现它
感谢您的任何帮助!
我有 Azure Blob 并为它添加了 Azure CDN。
如何获取到cdn的链接以上传到blob文件?
var storageAccount = CloudStorageAccount.Parse(configuration.ConnectionString);
var client = storageAccount.CreateCloudBlobClient();
var container = client.GetContainerReference("container");
CloudBlobContainer container = await _containerFactory.CreateAsync("files", cancellationToken);
var blockBlob = container.GetBlockBlobReference("file-name.png");
await blockBlob.UploadFromStreamAsync(fileStream, cancellationToken);
return blockBlob.Uri; // return blob blob url
Run Code Online (Sandbox Code Playgroud)
blockBlob.Uri 返回 blob url,但我需要 CDN uri?
是否可以基于c#代码获取CDN uri?无需将 uri 的一部分替换为 cdn 端点。
我已经通过 CI/CD 从 Azure DevOps 的 ARM 模板创建了 Azure CDN,遵循以下参考 -
https://github.com/Azure/azure-quickstart-templates/tree/master/201-cdn-with-storage-account
Azure CDN 创建并映射了带有终结点的自定义域。但不确定如何通过 ARM(来自 Azure DevOps)模板在自定义域中启用 HTTPS(KeyVault 中可用的我自己的证书),MS 模板参考中的选项不可用。
想要自动化 Azure CDN 的整个创建。
有没有办法为 CustomDomain 彻底的 DevOps 启用 HTTPS?
这是我的脚本(不是最终的)-
#Enable Https in Custom Domain - Azure CDN
$cdnProfileName ='debtestcdnprofile'
$cdnEndpointName = 'debtestcdnendpoint'
$cdnCustomDomainName = 'mysubdomain-mydomain-com' # testing
$keyVaultName = 'debkeyvault'
$certificateName = 'debasiscert'
$apiVersion = '2019-04-15'
$secretVersion = 'XXXXXXXXXXX'
$secretName = 'debasiscert'
$keyVaultResourceGroupName = 'rsgStgCDN'
$cdnProfile = Get-AzCdnProfile -ProfileName $cdnProfileName;
$resourceGroup = Get-AzResourceGroup -Name $cdnProfile.ResourceGroupName;
$resourceGroupName …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Azure CDN 添加为服务帐户,以便将其连接到 KeyVault。
遵循官方指南和其他建议,例如无法将 Microsoft.Azure.Cdn 服务主体添加到 Key Vault 访问策略
但是这个命令:
New-AzureRmADServicePrincipal -ApplicationId "205478c0-bd83-4e1b-a9d6-db63a3e1e1c8"
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
New-AzureRmADServicePrincipal :使用此权限时,正在创建的服务主体的后备应用程序必须在本地租户中。
即使在我使用Set-AzureRmContext -TenantId xxx.
任何帮助表示赞赏!
我正在尝试主持一个Angular项目Azure Storage Static Website Azure CDN Verizon Premium
假设我为每个Angular构建都有名为类似的容器v0.3.13.3,并且在该容器中还有角度项目的多语言构建。
我想要实现的是index.html为每个版本和语言提供正确的路由。
您可能会在下面找到示例路线:
my.domain.com/v0.3.13.3应该服务/v0.3.13.3/index.html
my.domain.com/v0.3.13.3/dashboard应该服务/v0.3.13.3/index.html
my.domain.com/v0.3.13.3/fr应该服务/v0.3.13.3/fr/index.html
my.domain.com/v0.3.13.3/fr/dashboard应该服务/v0.3.13.3/fr/index.html
我已经成功地做到了,Azure Standard Rules Engine 如下面的屏幕截图所示。
但据我从文档中看到,在标准规则引擎Contains字段中不能用正则表达式填充。我已经在谷歌上进行了挖掘,但似乎找不到任何适合我的解决方案。
因此,我已将 CDN 服务切换为 Verizon Premium 并尝试应用于(v(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+))路径正则表达式。
我在使用 Verizon Premium 时遇到的主要问题是,只有URL Rewrite在我将 IF 字段声明为Always
如您所见,URL Rewrite未列出。
我还使用声明进行了几次部署Always ,但没有任何好处。
每个人在博客中分享的唯一示例
所以上面的例子不包括文件扩展名和子路由。
有什么方法可以实现我的目标吗?
提前致谢。
我使用Azure 存储帐户的静态网站功能来托管 React.js 应用程序。该站点还启用了 CDN 端点(Microsoft 标准 CDN 定价层),因此站点 URL 类似于https://xxx.azureedge.net/。问题:当我尝试通过 HTTP 协议访问该网站时,它显示:
The account being accessed does not support http.
HttpStatusCode: 400
ErrorCode: AccountRequiresHttps
RequestId : 46959fc9-a01e-006d-2bc5-6b781e000000
TimeStamp : 2020-08-06T07:48:01.6590412Z
Run Code Online (Sandbox Code Playgroud)
我希望将用户重定向到 HTTPS 版本。
我们有 VAPT 调查结果,可以将存储帐户添加到专用终结点。
Azure CDN 使用存储帐户作为源。
添加终结点后,Azure CDN 无法访问并给出 XML 页面错误。
如何从 Azure CDN 使用专用终结点访问存储帐户?