Hosting ASP.NET Core behind Apache on Ubuntu
The official documentation for hosting on Linux only describes how to host asp.net core apps behind nginx. Here is a short summary about the same for Apache.
So, first of all just running the app and let kestrel do everything is technically possible, but not recommended: according to MS you should use a proper web server and reverse proxy to kestrel.
If you want to host your site behind Apache from whatever reason you can follow the official documentation and replace the nginx related steps with these steps:
Install Apache and make sure you get the default page (there are many great tutorials on this).
Install the the necessary apache modules by running these commands:
sudo a2enmod proxy_html sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod proxy_ajp sudo a2enmod rewrite sudo a2enmod deflate sudo a2enmod headers sudo a2enmod proxy_balancer sudo a2enmod proxy_connect
Modify the /etc/apache2/sites-enabled/000-default.conf file to reverse proxy to the asp.net core app like this:
<VirtualHost *:80> ProxyPreserveHost On ProxyPass / http://0.0.0.0:5000/ ProxyPassReverse / http://0.0.0.0:5000/ </VirtualHost>
In this case we forward everything to localhost:5000.
Then start your ASP.NET Core app. As the official documentation suggests I use supervisor, which makes sure that the process always runs.
That’s it! I did not find anything on this topic, so hopefully this will help others.