#
What Are Reverse Proxies?
What can a reverse proxy do for you?
Many services that are self-hosted have a web UI. If you have many of these services running, a reverse proxy can be a central daemon that handles requests for all of these various backends.
Let's say that you have three different services running:
- Node.js forum NodeBB that runs on port
8008
- Navidrome music streaming server on port
3000
through a local machine using IP192.168.1.125
- ownCloud web UI on port
8800
on a local machine with an IP of192.168.1.123
You have a domain name that you want to use for these but don't want an ugly URL like http://mydomain.com:8008
. To complicate things further, these services are all on different hosts.
A reverse proxy can be configured to accept requests for this domain and redirect them to a different host or port.
To make your URLs pretty, the reverse proxy can be configured to redirect requests on your domain based on a folder name to a different service on your local network.
http://mydomain.com/forum/
-->http://localhost:8008/
http://mydomain.com/music/
-->http://192.168.1.125:3000/
http://mydomain.com/cloud/
-->http://192.168.1.123:8800/
As you can see, it is much nicer to reach these services through a single domain and folder than to use their port and host individually.
You can even couple this with a self-hosted VPN so that these requests can be proxied to different services on different networks in different locations. All you need to do is to make sure the proxy and the services are on the same VPN and to use the VPN IP addresses.
You don't have to use folders either. You can use subdomains as well such as music.mydomain.com
, cloud.mydomain.com
, and forum.mydomain.com
respectively. It's all up to you and how you want to structure your services.