{"id":1006,"date":"2026-11-02T04:21:47","date_gmt":"2026-11-02T04:21:47","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=1006"},"modified":"2026-11-02T04:21:47","modified_gmt":"2026-11-02T04:21:47","slug":"migrating-iis-bindings-between-windows-vps-hosts","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/","title":{"rendered":"Migrating IIS Bindings Between Windows VPS Hosts"},"content":{"rendered":"<h1>Migrating IIS Bindings Between Windows VPS Hosts<\/h1>\n<p><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80\" alt=\"Close-up of circuit board traces suggesting web server infrastructure\" \/><\/p>\n<p><strong>TL;DR:<\/strong> Moving sites between Windows guests is less about copying <code>inetpub<\/code> and more about reconciling bindings, certificates, app pools, and DNS cutover. Export configuration, verify hostname and SNI bindings on the new <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, then flip DNS only after HTTPS responds on the destination IP.<\/p>\n<h2>Inventory before you touch DNS<\/h2>\n<p>List every site in IIS Manager or via <code>Get-Website<\/code> and <code>Get-WebBinding<\/code>. Capture host headers, ports, IP assignments (or \u201cAll Unassigned\u201d), and whether SNI is required. Screenshot or export certificate thumbprints tied to each https binding. Note app pool identities, .NET CLR versions, and any URL Rewrite rules that hard-code old hostnames.<\/p>\n<p>Also capture non-IIS dependencies: scheduled tasks that hit local sites, Windows services posting to localhost, and firewall rules for custom ports. Migrations fail late when a background worker still targets the old machine name.<\/p>\n<h2>Move content and config as separate streams<\/h2>\n<p>Robocopy or package the site folders first, preserving ACLs for the app pool identity. Separately export IIS config with <code>appcmd list site \/config \/xml<\/code> or shared configuration backups. Blindly cloning the entire Windows volume copies secrets and stale HTTP.sys reservations you may not want.<\/p>\n<p>On the destination, create matching folder roots before importing bindings. Importing a site that points at <code>D:\\sites\\app<\/code> when only <code>C:\\inetpub<\/code> exists yields mysterious 500.19 errors that look like XML corruption but are simple path misses.<\/p>\n<h3>App pool identity friction<\/h3>\n<p>ApplicationPoolIdentity creates per-pool virtual accounts. After migration those SIDs differ. Re-ACL the content roots for the new pool identities rather than running everything as LocalSystem \u201cjust for today.\u201d If you used custom domain service accounts, confirm the new VPS can reach the domain or switch to local least-privilege users before go-live.<\/p>\n<h2>Certificates: export, import, then bind<\/h2>\n<p>PFX export from the source (with private key) into the destination Local Computer\\Personal store. Bind by thumbprint, not by friendly name\u2014names collide across environments. For Let\u2019s Encrypt style renewals, reinstall the ACME client on the new host and run a staging issuance against a temporary hostname or hosts-file override before production DNS moves.<\/p>\n<p>Central Certificate Store setups need the file share and naming convention recreated; missing CCS paths present as binding failures even when the PFX exists in the personal store.<\/p>\n<h2>HTTP.sys URL reservations and port collisions<\/h2>\n<p>HttpListener apps and some agents reserve URL prefixes that conflict with IIS. After import, run <code>netsh http show urlacl<\/code> and <code>netstat -ano<\/code> for :80\/:443. A side-installed panel or old Tomcat service holding 8080 is a classic \u201csite starts but never answers\u201d culprit.<\/p>\n<p>If the source used a dedicated private IP binding, the destination may only have one public address. Convert to host-header + SNI bindings instead of inventing fake secondary IPs in IIS that the hypervisor will never deliver.<\/p>\n<h2>Warm the destination while DNS still points at the old box<\/h2>\n<p>Edit your workstation hosts file to resolve the public hostname to the new VPS IP. Browse every critical path: home, login, static assets, and one authenticated POST. Check response headers for unexpected redirects to the old IP or http\u2192https loops caused by rewrite rules that assumed the previous load balancer.<\/p>\n<p>Only when hosts-file tests pass should you lower TTL (ideally hours earlier) and update A\/AAAA records. Keep the old VPS read-only or on a maintenance page during propagation so dual-write databases do not diverge.<\/p>\n<h2>Database connection strings and secret sprawl<\/h2>\n<p>Web.config transforms and environment variables often still name the old SQL host. Search the migrated tree for the previous VPS hostname and internal IP. Update connection strings, Redis endpoints, and SMTP relays in one pass, then recycle app pools. Leaving one forgotten API project on the old string creates intermittent bugs that look like \u201cmigration flakiness.\u201d<\/p>\n<h2>Rollback that is actually usable<\/h2>\n<p>Do not delete the source VPS on cutover day. Leave IIS running but remove public publish (panel ACL deny, or stop http\/https bindings) so a DNS revert restores service. Document the exact DNS values and the timestamp of the cut. Snapshot both guests before binding imports so a bad appcmd merge is not a rebuild.<\/p>\n<h2>Post-cutover binding audit on the new host<\/h2>\n<p>Twenty-four hours later, dump bindings again and compare to your pre-migration inventory. Confirm auto-renewal scheduled tasks fired, Windows Firewall still allows 80\/443 on the active profile, and that no leftover site still points at empty folders. Watch HTTP.sys error logs for hostname mismatches from clients that cached the old IP.<\/p>\n<p>Decommission the source only after analytics and mail flows look healthy on the destination. A binding-aware migration on <a href=\"https:\/\/windows-vps.org\/\">windows-vps.org<\/a> finishes when certificates renew themselves and the old guest is powered off on purpose\u2014not when the first homepage hit merely \u201clooks fine.\u201d<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Migrating IIS Bindings Between Windows VPS Hosts TL;DR: Moving sites between Windows guests is less about copying inetpub and more about reconciling bindings, certificates, app pools, and DNS cutover. Export configuration, verify hostname and SNI bindings on the new Windows VPS, then flip DNS only after HTTPS responds on the destination IP. Inventory before you &#8230; <a title=\"Migrating IIS Bindings Between Windows VPS Hosts\" class=\"read-more\" href=\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/\" aria-label=\"Read more about Migrating IIS Bindings Between Windows VPS Hosts\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[9],"tags":[],"class_list":["post-1006","post","type-post","status-publish","format-standard","hentry","category-hosting-workflows"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Migrating IIS Bindings Between Windows VPS Hosts - Windows VPS Blog<\/title>\n<meta name=\"description\" content=\"Migrating IIS Bindings Between Windows VPS Hosts TL;DR: Moving sites between Windows guests is less about copying inetpub and more about reconciling\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating IIS Bindings Between Windows VPS Hosts\" \/>\n<meta property=\"og:description\" content=\"Migrating IIS Bindings Between Windows VPS Hosts\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-02T04:21:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80\" \/>\n<meta name=\"author\" content=\"windows-vps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@myxiechengxuan\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"windows-vps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/\",\"name\":\"Migrating IIS Bindings Between Windows VPS Hosts - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80\",\"datePublished\":\"2026-11-02T04:21:47+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"description\":\"Migrating IIS Bindings Between Windows VPS Hosts TL;DR: Moving sites between Windows guests is less about copying inetpub and more about reconciling\",\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#primaryimage\",\"url\":\"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80\",\"contentUrl\":\"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrating IIS Bindings Between Windows VPS Hosts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\",\"url\":\"https:\/\/windows-vps.org\/blog\/\",\"name\":\"Windows VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/windows-vps.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\",\"name\":\"windows-vps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"caption\":\"windows-vps\"},\"sameAs\":[\"https:\/\/windows-vps.org\/blog\",\"https:\/\/x.com\/myxiechengxuan\"],\"url\":\"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrating IIS Bindings Between Windows VPS Hosts - Windows VPS Blog","description":"Migrating IIS Bindings Between Windows VPS Hosts TL;DR: Moving sites between Windows guests is less about copying inetpub and more about reconciling","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/","og_locale":"en_US","og_type":"article","og_title":"Migrating IIS Bindings Between Windows VPS Hosts","og_description":"Migrating IIS Bindings Between Windows VPS Hosts","og_url":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-11-02T04:21:47+00:00","og_image":[{"url":"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80","type":"","width":"","height":""}],"author":"windows-vps","twitter_card":"summary_large_image","twitter_creator":"@myxiechengxuan","twitter_misc":{"Written by":"windows-vps","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/","url":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/","name":"Migrating IIS Bindings Between Windows VPS Hosts - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#primaryimage"},"image":{"@id":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#primaryimage"},"thumbnailUrl":"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80","datePublished":"2026-11-02T04:21:47+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"description":"Migrating IIS Bindings Between Windows VPS Hosts TL;DR: Moving sites between Windows guests is less about copying inetpub and more about reconciling","breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#primaryimage","url":"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80","contentUrl":"https:\/\/images.unsplash.com\/photo-1518770660439-4636190af475?auto=format&amp;fit=crop&amp;w=1200&amp;q=80"},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/migrating-iis-bindings-between-windows-vps-hosts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrating IIS Bindings Between Windows VPS Hosts"}]},{"@type":"WebSite","@id":"https:\/\/windows-vps.org\/blog\/#website","url":"https:\/\/windows-vps.org\/blog\/","name":"Windows VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/windows-vps.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58","name":"windows-vps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","caption":"windows-vps"},"sameAs":["https:\/\/windows-vps.org\/blog","https:\/\/x.com\/myxiechengxuan"],"url":"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/"}]}},"_links":{"self":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/1006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/comments?post=1006"}],"version-history":[{"count":1,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/1006\/revisions"}],"predecessor-version":[{"id":1007,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/1006\/revisions\/1007"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=1006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=1006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=1006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}