Why is the Nginx webserver called a "reverse proxy"?

A typical "forward" proxy (commonly just called "proxy") is used to allow internal clients to reach out to external sites.

For example, a corporation may have desktop users who want to reach the internet, but firewalls block them. The users can configure their browser to reach a proxy server, which will make the connection for them.

A "reverse" proxy allows external clients to reach in to internal sites.

For example, a corporation may run a dozen different web sites behind a firewall. A reverse proxy would be programmed so that incoming requests for "site1.corporate.example.com" will be forwarded to the real web server for that site. In this way the corporation only needs to expose one real web server.

There are many use cases for both forward and reverse proxies.

nginx is a web server, similar to apache and IIS. Like many web servers it can be configured to work in forward proxy mode or reverse proxy mode.

The phrase "nginx reverse proxy" means the nginx server configured as a reverse proxy.


Why is the Nginx webserver called a "reverse proxy"?

"Reverse proxy" refers to a specific function that a specific Nginx instance can take on. Other Nginx instances can be ordinary web servers, or mail proxies or even load balancers (which often refers to "reverse proxy across multiple servers").

I know any "proxy" to be a "medium"

A more accurate term is "intermediary", as in "I'm accessing some resources on your behalf". "Medium" as a noun can also refer to the transport mechanism over which you're communicating.

and this touches a more basic question of "how can a medium be forward or reverse".

The difference between forward and reverse proxies lies in the association, which basically asks the question: "Whose interests am I serving?"

In a forward proxy, the association is with the clients, i.e. "I'm helping my select group of users access arbitrary servers".

In a reverse proxy, the association is with the servers, i.e. "I'm helping my select group of servers manage all incoming requests from arbitrary clients".