{"id":13915,"date":"2023-05-16T12:47:36","date_gmt":"2023-05-16T07:17:36","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=13915"},"modified":"2023-05-16T12:47:36","modified_gmt":"2023-05-16T07:17:36","slug":"azure-cdn","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/05\/16\/azure-cdn\/","title":{"rendered":"Azure CDN"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">How it works?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"522\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-42.png?w=940\" alt=\"\" class=\"wp-image-13917\" \/><\/figure>\n\n\n\n<p>Azure Content Delivery Network (CDN) is a CDN service provided by Azure Cloud Platform that enables storing and accessing data on different content servers and locations \u2013 used by online or cloud services. \u00a0A CDN store the content cached on the edge servers that are available in the POP locations to reduce latency. Azure CDN\u00a0is important for us which requires multiple hits to boost up the process of our applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Benefits of using Azure CDN \u2013<\/strong><\/h2>\n\n\n\n<ul>\n<li>Better performance and improved user experience for end users<\/li>\n\n\n\n<li>Large scaling to better handle instant high loads<\/li>\n\n\n\n<li>Distribution of user requests and serving of content directly from edge servers so that less traffic gets sent to the origin server.<\/li>\n<\/ul>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Working Of Azure CDN<\/strong> :<\/h2>\n\n\n\n<ul>\n<li>The working of the&nbsp;<strong>Azure CDN<\/strong>&nbsp;commences when a user requests a file or asset with the help of an URL. They use a specific domain name for putting up their request, which can also be a custom domain or an endpoint hostname. The DNS is then responsible for directing the request to the nearest POP location. It automatically picks the POP that is closed to the geographical location of the user.<\/li>\n\n\n\n<li>If no edge servers in the POP have the file in their cache, the POP requests the file from the origin server. The origin server can be an Azure Web App, Azure Cloud Service, Azure Storage account, or any publicly accessible web server.<\/li>\n\n\n\n<li>The origin server returns the file to an edge server in the POP.<\/li>\n\n\n\n<li>The role of the edge server is to cache the file and then return it to the user who requested the same. It caches the file within the POP to make it available for other users who request it next time. But there is a limitation for that file to remain in the cache.<\/li>\n\n\n\n<li>The remains cached on the edge server in the POP location until the time-to-live (TTL) specified by its HTTP headers expires. If the origin server didn&#8217;t specify a TTL, the default TTL is seven days.<\/li>\n\n\n\n<li>If the TTL for the file hasn&#8217;t expired, the POP edge server returns the file directly from the cache. This process results in a faster, more responsive user experience.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Requirements to create Azure CDN :<\/strong><\/h3>\n\n\n\n<ul>\n<li>Must have an active subscription to Azure.<\/li>\n\n\n\n<li>You need and create your CDN profile that has the CDN endpoints. Every CDN endpoint is a specific configuration that users can customize with required content delivery behavior and access.<\/li>\n\n\n\n<li>The&nbsp;<a href=\"https:\/\/azure.microsoft.com\/en-us\/pricing\/details\/cdn\/\" target=\"_blank\" rel=\"noopener\">pricing of Azure CDN<\/a>&nbsp;depends upon the CDN profile levels. For using the mix of pricing tiers, you need to go ahead and create multiple CDN profiles.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Limitations of Azure CDN :<\/strong><\/h3>\n\n\n\n<p>Each Azure subscription has default limits to create How many CDN profiles will have created and the maximum number of endpoints will have created in each CDN profile. And How many custom domains will have been mapped to a single endpoint.<\/p>\n\n\n\n<p>For more information on CDN Limitations pls go through the MS doc of <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-resource-manager\/management\/azure-subscription-service-limits\" target=\"_blank\" rel=\"noopener\">CDN limits<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Azure CDN Features :<\/strong><\/h3>\n\n\n\n<ul>\n<li><strong>Dynamic site acceleration via Azure CDN<\/strong>\n\n\n\n\n\n\n<ul>\n<li><strong>Azure CDN caching behavior<\/strong> \u2013 Azure CDN provides two types of caching rules: global and custom.<\/li>\n\n\n\n<li><strong>Global caching rules &#8211;<\/strong> You can set one global caching rule for each endpoint in your profile, which affects all requests to the endpoint. The global caching rule overrides any HTTP cache-directive headers, if set.<\/li>\n<\/ul>\n\n\n\n<ul>\n<li><strong>Custom caching rules<\/strong> &#8211; You can set one or more custom caching rules for each endpoint in your profile. Custom caching rules match specific paths and file extensions, get processed in order, and override the global caching rule, if set.<\/li>\n\n\n\n<li><strong>HTTPS Custom Domain Support<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>For more info about CDN features pls go through this Doc <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cdn\/cdn-features\" target=\"_blank\" rel=\"noopener\">Azure CDN features<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step to create Azure CDN profile and End points \u2013<\/strong><\/h3>\n\n\n\n<p>There are different methods to create a CDN profile but in this blog, we will create using terraform. By the way, We have multiple terraform modules to create infrastructure in Azure. You can also check out this repo to use multiple terraform modules of Azure services.<\/p>\n\n\n\n<ul>\n<li>Azure Terraform CDN&nbsp; module can be found <a href=\"https:\/\/github.com\/OT-terraform-azure-modules\/terraform-azure-cdn\/tree\/A-1.0\" target=\"_blank\" rel=\"noopener\">in this repo<\/a><\/li>\n\n\n\n<li>Please check below main.tf file.&nbsp; Same insert the values as per your requirements.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><code>module \"cdn_profile\" {\nsource = \"https:\/\/github.com\/OT-terraform-azure-modules\/terraform-azure-cdn.git\"\nresource_group_name = module.res_group.resource_group_name\nlocation  = module.res_group.resource_group_location\nstorage_account_name = \"_\"\nstorage_container_name = \"_\"\nstorage_blob_name = \"_\"\ncdn_profile_name = \"_\"\ncdn_endpoint_name = \"_\"\n}\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>CONCLUSION<\/strong><\/h3>\n\n\n\n<p>This article is covered the basic required points of Azure CDN. This is an inexpensive and easy to configure to use the service provided by Azure. Apart from some possibilities shown in this blog, It can be possible to configure some parameters such as caching by time or caching by directories. You can use the given Azure CDN terraform module to create it. Please go through the <a href=\"https:\/\/github.com\/OT-terraform-azure-modules\/terraform-azure-cdn\/blob\/A-1.0\/README.md\" target=\"_blank\" rel=\"noopener\">README.md<\/a> of the module.<\/p>\n\n\n\n<p><strong>Blog Pundits: <a href=\"https:\/\/www.linkedin.com\/in\/mehul-sharma-devops\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mehul Sharma<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong>OpsTree is an End-to-End <a href=\"https:\/\/opstree.com\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Azure+CDN\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps Solution Provider<\/a>.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Azure+CDN\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>How it works? Azure Content Delivery Network (CDN) is a CDN service provided by Azure Cloud Platform that enables storing and accessing data on different content servers and locations \u2013 used by online or cloud services. \u00a0A CDN store the content cached on the edge servers that are available in the POP locations to reduce &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/05\/16\/azure-cdn\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Azure CDN&#8221;<\/span><\/a><\/p>\n","protected":false},"author":233730519,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[44070,335778,768739308,676319247,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3Cr","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13915"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/233730519"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=13915"}],"version-history":[{"count":17,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13915\/revisions"}],"predecessor-version":[{"id":14111,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13915\/revisions\/14111"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=13915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=13915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=13915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}