Azure - High level Network Design for Static Web Page

Below are the step by step process to create a complete network infrastructure for deploying static web application
Resource group
- This help us create all the resources in singe group that helps to track and manage the resource easily
VNet Configuration
Enter the Name, Subscription, Resource group and also the region
In Security tab can select the bastion host which helps in accessing the application deployed in instance(does not have public IP) in private subnet - paid service and also create public IP address with it helps in accessing bastion host
Enable the Azure Firewall
can select any tire
policy - means how should the firewall behave - can create new
IP Address Section
Need to define the CIDR address
Azure gives a clear interface which says what are all IP’s are available and what are all IP allocated to which resources.
Create VM
There are different subnets are created but we are creating the VM in default subnet
And we are using ssh key for authentication
Leave default disk configuration
In Network configuration select your VPC and select default subnet
For public IP select none because we are going to access this VM from bastion host
SSH Into VM Using Bastion
In the list of VM select the VM you created and click on connect
In connect you can see a option called bastion click on that
this will ask for the authentication (for this we can select ssh from local file)
then connect , this will connect to the VM through the bastion host that created with VNet
In that you can update and install the nginx using apt-get or apt
then go the /var/www/html/ and create simple index.html
then restart the nginx using systemctl
So to accessing that html file we need to change the fire wall rules
Updating firewall for accessing index.html file
Search for the firewall and go the firewall that created during VNet creation
in that go to firewall policy
In that firewall policy we need to create a DNAT(Destination Network Address Translation) rule so click that
then, first add a rule collection in that there is field called priority, which means if firewall have multiple rules the rule with least priority will be applied (least is 100 to 65536)
after creating rule collection, need to create a rule for that collection
select the rule collection that just created and give the name for the rule and select source type as IP address
Source IP → it is the IP who need to access(only my device or everybody, or for specific IP these can be given by comma separated)
Destination IP → IP address of the firewall that is associated with the VM
Destination port → for with port of firewall has to open for web
Translated Type is ip address this is where the application deployed resource we specify
Translation address is the private ip of the index.html is deployed using nginx
Translation port → port that application is running
So after updating rules you can access the nginx server using firewall ip with port number(http://firewall-ip:port)
Subscribe to my newsletter
Read articles from Manoj M directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Manoj M
Manoj M
Software Engineer with 2 years of experience developing scalable full-stack applications and managing cloud native infrastructure. Proficient in Java, Spring Boot, micro-services architecture, and modern frontend frameworks including React and Angular. Experienced in containerisation with Docker and Kubernetes, implementing robust CI/CD pipelines, and deploying applications on AWS. Strong background in translating business requirements into technical solutions and collaborating with cross-functional teams to deliver enterprise-grade applications