Complete Flask Deployment Guide for Windows VPS with IIS

Category > OTHERS || Published on : Tuesday, May 12, 2026 || Views: 4 || Flask App Deployment Windows VPS using IIS Reverse Proxy GoDaddy DNS


Here Pawan Kumar will explain how to Flask App Deployment on Windows VPS using IIS Reverse Proxy & GoDaddy DNS

Flask App Deployment on Windows VPS using IIS

Flask App Deployment on Windows VPS using IIS

Complete Step-by-Step Guide for Deploying Python Flask Application using GoDaddy DNS + IIS Reverse Proxy + HTTPS SSL

Python Flask IIS Windows VPS GoDaddy DNS HTTPS SSL

Final Architecture

Internet

yourdomain.com / app.yourdomain.com

GoDaddy DNS

Windows VPS Public IP

IIS (Port 80 / 443)

Reverse Proxy

Flask App (127.0.0.1:5000)
STEP 1 — Prepare Flask Application

Ensure your Flask app is already running on:

http://127.0.0.1:5000
 

Test locally on VPS browser:

http://localhost:5000
STEP 2 — Get VPS Public IP

Open:

https://whatismyipaddress.com
 

Example Public IP:

43.xx.xx.xx
STEP 3 — Configure GoDaddy DNS

Main Domain Example

Type Name Value
A @ 43.xx.xx.xx

Subdomain Example

Type Name Value
A app 43.xx.xx.xx
STEP 4 — DNS Propagation Check

Run in CMD:

ping app.yourdomain.com
STEP 5 — Install IIS
  • Open Server Manager
  • Add Roles and Features
  • Install Web Server (IIS)
  • Enable IIS Management Console
STEP 6 — Install URL Rewrite Module
https://www.iis.net/downloads/microsoft/url-rewrite
STEP 7 — Install ARR
https://www.iis.net/downloads/microsoft/application-request-routing
STEP 8 — Enable Proxy in IIS
  • Open IIS Manager
  • Click Server Name
  • Open ARR Cache
  • Open Server Proxy Settings
  • Enable Proxy
STEP 9 — Create IIS Website
Field Value
Site Name FlaskApp
Physical Path C:\inetpub\flaskapp
Binding http
Port 80
Host Name app.yourdomain.com
STEP 10 — Configure Reverse Proxy

Create web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>

        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://127.0.0.1:5000/{R:1}" />
                </rule>
            </rules>
        </rewrite>

    </system.webServer>
</configuration>
STEP 11 — Configure Firewall
Port Purpose
80 HTTP
443 HTTPS
5000 Internal Flask App
STEP 12 — Run Flask using Waitress

Install Waitress:

pip install waitress
 

Example app.py:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "Flask Running via IIS"

if __name__ == "__main__":
    from waitress import serve
    serve(app, host="127.0.0.1", port=5000)
STEP 13 — HTTPS SSL Setup

Download Win-ACME:

https://www.win-acme.com/
 

Run:

wacs.exe
STEP 14 — Auto Start Flask App

Download NSSM:

https://nssm.cc/download
 

Create Windows Service:

nssm install FlaskApp
 

Start Service:

net start FlaskApp
Production Recommendations
  • Do NOT expose Flask directly publicly using 0.0.0.0
  • Use IIS Reverse Proxy for internet traffic
  • Use HTTPS SSL for production
  • Use separate ports for multiple Flask apps
  • Use Windows Service for automatic startup
Multiple Flask Apps Example
Subdomain Port
api.domain.com 5000
trade.domain.com 5001
admin.domain.com 5002

Flask + IIS Deployment Guide for Windows VPS