Apache
How to publish a Wisej App using Apache as a reverse proxy.
.NET Core
There are a few steps required to deploy to deploy a Wisej.NET app to Apache on .NET Core. use the following Visual Studio Publishing link to generate a build. Then proceed with Basic Steps.
👉 If you are deploying on a Linux distribution or on MacOS, make sure libgdiplus 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 ImageSharp.
Basic Steps
After generating a build using the Visual Studio Publishing link above, copy the executable, resource files, and referenced DLLs to the folder they will run in.
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.
3. After verifying the app runs, you will need to configure the app to run on startup. systemd can be used to create a service file to start and monitor the underlying web app.
All Apache needs is an address and a port. In the httpd.conf file define the URL for your application and assign the URL:port of the actual Wisej application to the ProxyPass setting.
<VirtualHost *:80>
ServerName myapp.com
<Location /myapp/>
ProxyPass http://10.1.10.112:43662
</Location>
</VirtualHost>
The configurations in this book are minimal examples, use the full Apache guide to determine how to configure your Apache server.
This is all you need for Apache to dispatch the requests to the Wisej.NET application.
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.
// app.UseFileServer();
app.UseWhen(
cx => !cx.Request.Path.Value.EndsWith(".json", StringComparison.OrdinalIgnoreCase),
app => app.UseFileServer()
);
.NET Framework
Deploying a Wisej 2.x application to Apache is similar the the IIS deployment in regards to the files to copy to the production machine.
Basic Steps
Create the application directory on the deployment server
Create the /bin directory in the application's directory on the deployment server
Copy all the assemblies from your local /bin to the server's /bin (no need to copy xml and pdb files)
Copy the /Themes folder if you have custom themes or mixins
Copy the /Images folder if you have images that need to be served as URLs
Copy the /App_Data folder if your application uses it
Copy Web.config
Copy Default.html (and other html files you use sub-applications)
Copy Default.json (and other json configuration files if you use sub-applications)
Copy favicon.ico.
Notice that step 1 is different from IIS because Apache never loads the actual application, instead it acts as a Reverse Proxy dispatching requests to the web application listening on 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 an IIS process or a Self Hosted process (may also run in a Docker container).
All Apache needs is an address and a port. In the httpd.conf file define the URL for your application and assign the URL:port of the actual Wisej application to the ProxyPass setting.
<VirtualHost *:80>
ServerName myapp.com
<Location /myapp/>
ProxyPass http://10.1.10.112:43662
</Location>
</VirtualHost>
The configurations in this book are minimal examples, use the full Apache guide to determine how to configure your Apache server.
This is all you need for Apache to dispatch the requests to the Wisej.NET application.
Load Balancer
Apache can also serve as a load balancer out of the box. Instead of setting the ProxyPass property to the actual Wisej server, assign it to a balancer group that defines the load balancing rotation.
<VirtualHost *:80>
ServerName myapp.com
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://myapp1>
BalancerMember 10.1.10.1:52433 route=node1
BalancerMember 10.1.10.1:52434 route=node2
BalancerMember 10.1.10.2:52000 route=node3
BalancerMember 10.1.10.2:52001 route=node4
ProxySet stickysession=ROUTEID
</Proxy>
<Location /myapp/>
ProxyPass balancer://myapp1/
</Location>
</VirtualHost>
Last updated
Was this helpful?