Wisej.NET Deployment
HomeNewsSupportVideos
  • Deployment
  • Targets
    • IIS
    • NGINX
    • Apache
    • Self Hosted
    • Hybrid
    • Amazon AWS
    • Microsoft Azure
    • ASP.NET Hosting
    • Linux, MacOS
    • Desktop (deprecated)
  • Concepts
    • Load Balancing
    • Visual Studio Publishing
    • Server Debugging
  • Troubleshooting
    • License Activation
Powered by GitBook
On this page
  • .NET Core
  • Basic Steps
  • Security
  • .NET Framework
  • Basic Steps
  • Load Balancer

Was this helpful?

Export as PDF
  1. Targets

NGINX

How to publish a Wisej App using NGINX as a reverse proxy.

PreviousIISNextApache

Last updated 3 months ago

Was this helpful?

.NET Core

Wisej.NET applications targeting .NET Core can follow Microsoft's instructions for deploying an ASP.NET Core application to Linux with NGINX.

Below you will find some useful information related to Wisej.NET-specific deployments.

Basic Steps

  1. After generating a build using the Visual Studio Publishing Tool, copy the executable, resource files, and referenced DLLs to the folder they will run in.

  2. Test that the deployment works using the dotnet start AppName command.

If the application is deployed as an executable, ensure the executable has the execute permission and run sudo ./AppName.

http {
    
    server {
        listen 80;
        
        location /myapp/ {
            # Location of the Wisej server. 
            proxy_pass http://10.1.10.112:43662; 
        }
    }
}

The configuration in this book are minimal examples, use the full NGINX guide to determine how to be configure your NGINX server.

This is all you need for NGINX to dispatch the requests to the Wisej.NET application on .NET Core.

Security

When deploying on .NET Core, you are unable to use the web.config file to configure the System.Web.HttpForbiddenHandler, which is typically used to block the downloading of potentially sensitive .json files. As a result, these .json files could become accessible for downloading, which might pose a security vulnerability.

Since ASP.NET Core relies on middleware modules instead of using traditional HttpHandlers and HttpModules, to secure specific files or directories, you need to modify the configuration in the Startup.cs file. Adjusting the middleware settings within Startup.cs allows you to implement security measures to protect sensitive files or directories effectively.

Below is an example of how to block access to specific files or directories in ASP.NET Core, based on your security requirements. You can customize the middleware configuration in the Startup.cs file to meet your particular security needs.

Conditional UseFileServer
// app.UseFileServer();
app.UseWhen(
 cx => !cx.Request.Path.Value.EndsWith(".json", StringComparison.OrdinalIgnoreCase), 
 app => app.UseFileServer()
);

.NET Framework

Basic Steps

  1. Create the application directory on the deployment server

  2. Create the /bin directory in the application's directory on the deployment server

  3. Copy all the assemblies from your local /bin to the server's /bin (no need to copy xml and pdb files)

  4. Copy the /Themes folder if you have custom themes or mixins

  5. Copy the /Images folder if you have images that need to be served as URLs

  6. Copy the /App_Data folder if your application uses it

  7. Copy Web.config

  8. Copy Default.html (and other html files you use sub-applications)

  9. Copy Default.json (and other json configuration files if you use sub-applications)

  10. Copy favicon.ico.

http {
    
    server {
        listen 80;
        
        location /myapp/ {
            # Location of the Wisej server. 
            proxy_pass http://10.1.10.112:43662; 
        }
    }
}

The configuration in this book are minimal examples, use the full NGINX guide to determine how to be configure your NGINX server.

This is all you need for NGINX to dispatch the requests to the Wisej.NET application on .NET Framework.

Load Balancer

NGINX can also serve as a load balancer out of the box. Instead of setting the proxy_pass property to the actual Wisej server, assign it to an upstream configuration group that defines the load balancing rotation.

http {
    
    upstream myapp1 {
        ip_hash;
        server 10.1.10.1:52433;
        server 10.1.10.1:52434;
        server 10.1.10.2:52000;
        server 10.1.10.2:52001;
    }
    
    server {
        listen 80;
        
        location /myapp/ {
            # Location of the Wisej server. 
            proxy_pass http://myapp1; 
        }
    }
}

If you are deploying on a distribution or on , make sure is installed.

Starting with Wisej.NET 4, the use of libgdiplus is no longer necessary. This change is due to the development of a new managed System.Drawing library, which has been created in conjunction with .

3. After verifying the app runs, you will need to . systemd can be used to create a service file to start and monitor the underlying web app.

systemd is an init system that provides many powerful features for starting, stopping, and managing processes on Linux systems.

All NGINX needs is an address and a port. In the file define the URL for your application and assign the URL:port of the actual Wisej application to the proxy_pass setting.

Deploying a Wisej application on is similar the the deployment in regards to the files to copy to the production machine:

Notice that step 1 is different from IIS because NGINX never loads the actual application, instead it acts as a dispatching requests to the web application listening on a another internal port.

The actual Wisej application must be running and listening for requests in a separate process on the local machine or a remote machine. It can be either another process, or a process (may also run in a Docker container).

All NGINX needs is an address and a port. In the file define the URL for your application and assign the URL:port of the actual Wisej application to the proxy_pass setting.

Note that in the sample above we used "ip_hash" to bind a specific server to a client in order to achieve the required functionality. NGINX also supports "sticky" and other options.

👉
Linux
MacOS
libgdiplus
ImageSharp
configure the app to run on startup
Click here to make a service file.
nginx.conf
NGINX
IIS
Reverse Proxy
nginx.conf
LogoHost ASP.NET Core on Linux with NginxMicrosoftLearn
LogoNGINX Reverse Proxynginx
NGINX Reverse Proxy Setup
LogoNGINX Reverse Proxynginx
NGINX Reverse Proxy Setup
LogoHTTP Load Balancingnginx
NGING Load Balancing Setup
IIS
Self Hosted
sicky session