What is a "Reverse Proxy" on the Internet?
A reverse proxy is a computer that connects to a client in behalf of a server. Since clients always connect to servers, this means the reverse proxy is also technically a server; the server the reverse proxy connects to gets called by a different name—"origin server" or "origin"—in order to differentiate it from the reverse proxy's server.
The difference between a proxy and a reverse proxy is that the proxy connects to the server in behalf of the client (i.e. the client configures its proxy), while a reverse proxy is the reverse (the owner of the origin server configures its proxy). This means that while you can change the proxy your web browser uses (e.g. by setting up a VPN), you can't change the reverse proxy that you connect to when you access a website, because that is decided by the owner of the website.
Nowadays, many websites use Cloudflare as a reverse proxy. This means that whenever you access one such website, you are accessing Cloudflare's computers, and Cloudflare's computers download the data from the origin servers and pass the data to you.
You may be wondering what is the point of putting a second server in front of the first server. There are many good uses for this type of indirection.
In general, when you access a webpage, a program running in a web server loads some data from a database and renders the webpage's HTML code before sending it to you. This can take a short while depending on various factors. If a webpage is being accessed by lots of people, the server may become overwhelmed trying to serve all these clients at once.
Reverse proxies attempt to solve this problem by moving complexity to a separate computer. The origin server's job can be just rendering the webpage, and the reverse proxy's job is filtering traffic and caching.
For example, if the homepage of a website has data from the database, it must be rendered, but if we know this data only changes once per day, then the reverse proxy doesn't need to ask the origin server to re-generate the homepage every time someone accesses it. It can simply serve an old copy of the HTML code from the last time it was rendered. This means the origin server doesn't waste time rendering the same thing over and over again and resources are freed to be used to render pages that do chance. This is called caching.
Another example is that, if we know how much traffic our website normally gets, we can artificially slow down serving connections when there is an unusual spike in traffic. These spikes can be legitimate (slashdotting), but there are cases when malicious actors attempt to temporarily disable an online service by spamming random requests using bots (e.g. a botnet). This type of attack is a called a Distributed Denial of Service (DDoS), and it's the type of attack that servers like Cloudflare specialize in fighting against.