You, the admin: publish contoso-web
- App Services › + Create › Web App. Name (becomes contoso-web.azurewebsites.net), runtime (.NET, Node, Python…), OS, region, App Service plan: create new, pick a tier (Standard S1 for production).
- Deploy code: App › Deployment Center (GitHub, Azure DevOps, ZIP) or
az webapp up. - Add a slot: App › Deployment slots › + Add slot "staging". Deploy the new build there, test at contoso-web-staging.azurewebsites.net, then Swap.
- Scale: App Service plan › Scale up to change tier; Scale out for manual count or Custom autoscale rules (CPU > 70% for 10 min → +1, cooldown 5 min; schedule profiles for business hours).
| Tier | Max instances | Slots | Autoscale | Custom domain + TLS | Backup | VNet integration |
|---|---|---|---|---|---|---|
| Free / Shared | shared | 0 | No | No TLS | No | No |
| Basic | 3 manual | 0 | No | Yes | No | Yes |
| Standard | 10 | 5 | Yes | Yes | Yes | Yes |
| Premium v3 | 30 | 20 | Yes | Yes | Yes | Yes |
| Isolated (ASE) | 100 | 20 | Yes | Yes | Yes | Dedicated VNet |
Slots and swapping
A slot is a complete second copy of the app with its own URL and its own settings, on the same plan. Swap exchanges which one answers the production URL, instantly, and the old production stays in the slot so you can swap back. Every app setting and connection string travels with the swap unless you tick Deployment slot setting on it; sticky settings stay with the slot (a staging database string should be sticky). Swap with preview applies production settings to staging first so you can test before completing.
Your own domain and HTTPS
- App › Custom domains › + Add. Prove ownership at your DNS host: for
www.contoso.coma CNAME to contoso-web.azurewebsites.net; for the barecontoso.coman A record to the app's IP plus a TXT recordasuid. - Certificate: App Service managed certificate (free; no wildcard, cannot be exported), buy an App Service certificate, upload your own PFX, or import from Key Vault.
- Binding: SNI SSL (default, free) or IP-based SSL (dedicated IP, Basic tier or above). Then Configuration › General settings: HTTPS Only = On, minimum TLS 1.2.
Networking
| Direction | Feature | Does |
|---|---|---|
| Inbound | Access restrictions | Allow list of IPs or subnets (service endpoint); everyone else gets 403 |
| Inbound | Private endpoint | App reachable only on a private IP inside your VNet |
| Outbound | VNet integration | App can call servers inside a VNet (a SQL VM). Needs an empty, delegated subnet |
| Outbound | Hybrid connection | Reach one on-prem host:port without a VPN |
Backup (App › Backups, Standard and above): schedule to a storage account; includes files, configuration and optionally a linked database; restore to the same app or a new one. App settings become environment variables; Always On keeps the app loaded; Kudu at <app>.scm.azurewebsites.net is the advanced console.