Appearance
Deployment Guide
Welcome to the project! Follow these instructions to get your development environment up and running.
Table of Contents
- Prerequisites
- Setup Instructions
- Step 1: Install IIS
- Step 2: Download URL Rewrite Module
- Step 3: Install .NET 8 Hosting Bundle
- Step 4: Install Redis
- Step 5: Install Redis Manager
- Step 6: Install Seq
- Step 7: Install RabbitMq
- Step 8: Install Prometheus
- Step 9: Install Grafana
- Step 10: Running the Application
- IIS Configuration
- Folder Structure
- Reverse Proxy Configuration
Record Video
Prerequisites
Before you begin, ensure you have the following installed on your machine:
- [Visual Studio Code] or any other preferred code editor
- [Git]
Setup Instructions
Step 1: Install IIS
- Open the Control Panel on your machine.
- Navigate to Programs > Programs and Features > Turn Windows features on or off.
- In the Windows Features dialog, check the box for Internet Information Services (IIS) and click OK.
- Wait for the installation to complete. Once done, IIS will be installed and ready to use.
Step 2: Download URL Rewrite Module
- Download the URL Rewrite Module from [here].
- Run the installer and follow the instructions to complete the installation.
Step 3: Install .NET 8 Hosting Bundle
- Download the .NET 8 Hosting Bundle from [here].
- Run the installer and follow the on-screen instructions to complete the installation.
- Restart your machine to ensure all changes take effect.
Step 4: Install Redis
- Download the Redis installer from [here].
- Run the
.msifile and follow the installation instructions.
Step 5: Install Redis Manager
- Download the Redis Manager installer from [here].
- Run the
.exefile and follow the installation instructions.
Step 6: Install Seq
- Download the Seq installer from [here].
- Run the installer and follow the instructions to set it up.
- During the setup, configure Seq to use port
1234.
Step 7: Install RabbitMq
- Download the RabbitMq installer from [here].
- Run the installer and follow the instructions to set it up.
- During the setup, configure RabbitMq to use the default port
5672. - Configure the username and password. The defaults are
guestfor both. - Install the Management Plugin for the interface from [here].
- Open the RabbitMq command prompt and run this command:
rabbitmq-plugins enable rabbitmq_management. - You can access the Management interface from [http://localhost:15672/].
Step 8: Install Prometheus
- Download Prometheus from [here].
- Extract the downloaded
.zipfile to a directory of your choice. - Locate the
prometheus.ymlfile in the extracted folder, and replace it with theprometheus.ymlfile provided in the solution items of this project. - Open the folder and run the
prometheus.exefile. - You can access Prometheus on the default port, which is [http://localhost:9090].
Step 9: Install Grafana
- Download the Grafana installer from [here].
- Run the
.msifile and follow the installation instructions. - Once installed, Grafana will be accessible at [http://localhost:3000].
- The default username is
admin, and the default password is alsoadmin. You may be prompted to change the password upon first login. - After logging in, go to the Dashboards section in Grafana, and click + New.
- Choose Import and load the JSON file named
GrafanaDashboard.jsonfrom the solution items. - Ensure that Prometheus is configured as a data source in Grafana to populate the dashboard.
Step 10: Running the Application
- Ensure all services (Redis, Seq, RabbitMq, Prometheus, and Grafana) are running.
- Open the project in your preferred code editor.
- Run the application using the appropriate command for your environment (e.g.,
dotnet runor through Visual Studio). - Verify that the application is running and connected to all required services.
IIS Configuration
IIS Website Configuration

Folder Structure

Reverse Proxy Configuration
How Reverse Proxy Works
A reverse proxy acts as an intermediary for requests from clients seeking resources from servers. It forwards client requests to the appropriate server and returns the server's response to the client. This can help distribute load, enhance security, and simplify client access.
Server Variables Used
HTTP_X_FORWARDED_FOR: This server variable holds the same information as the X-Forwarded-For header, explicitly indicating the originating IP address of the client.
HTTP_X_FORWARDED_HOST: This server variable contains the original host requested by the client, similar to the X-Forwarded-Host header, allowing the backend server to know the intended destination.
HTTP_X_FORWARDED_PROTO: This server variable indicates the protocol used by the client (HTTP or HTTPS) for the original request, mirroring the functionality of the X-Forwarded-Proto header.
HTTP_HOST: This server variable contains the original Host header sent by the client, which specifies the domain name of the server being requested. It is crucial for routing requests correctly to the appropriate server.
HTTP_X_ORIGINAL_ACCEPT_ENCODING: This header is used to preserve the client's original
Accept-Encodingheader. It allows the backend server to respond with the appropriate encoding (like gzip or deflate) based on what the client can accept.HTTP_ACCEPT_ENCODING: This header specifies the content encodings that the client can process. The proxy can use this information to determine how to compress the response.
For detailed instructions on configuring IIS as a reverse proxy, refer to the guide: IIS Acting as Reverse Proxy: Where the Problems Start.
Download Microsoft Application Request Routing 3.0
You can download Microsoft Application Request Routing 3.0 (x64) from the official Microsoft Download Center here.