A proxy server may reside on the user's local computer, or at any point between the user's computer and destination servers on the Internet.
A proxy server that passes unmodified requests and responses is usually called a gateway or sometimes a tunneling proxy.
A forward proxy is an Internet-facing proxy used to retrieve data from a wide range of sources (in most cases anywhere on the Internet).
A reverse proxy is usually an internal-facing proxy used as a front-end to control and protect access to a server on a private network. A reverse proxy commonly also performs tasks such as load-balancing, authentication, decryption and caching.
From Gourley's HTTP: The Definitive Guide
Strictly speaking, proxies connect two or more applications that speak the same protocol, while gateways hook up two or more parties that speak different protocols. A gateway acts as a “protocol converter,” allowing a client to complete a transaction with a server, even when the client and server speak different protocols.
Figure 6-2 illustrates the difference between proxies and gateways:
• The intermediary device in Figure 6-2a is an HTTP proxy, because the proxy speaks HTTP to both the client and server.
• The intermediary device in Figure 6-2b is an HTTP/POP gateway, because it ties an HTTP frontend to a POP email backend. The gateway converts web transactions into the appropriate POP transactions, to allow the user to read email through HTTP. Web-based email programs such as Yahoo! Mail and MSN Hot- mail are HTTP email gateways.
In practice, the difference between proxies and gateways is blurry. Because browsers and servers implement different versions of HTTP, proxies often do some amount of protocol conversion. And commercial proxy servers implement gateway functional- ity to support SSL security protocols, SOCKS firewalls, FTP access, and web-based applications.
Are the definitions of gateway in the two sources contradicting each other? The first says a gateway pass received requests and responses without modification, while the second says a gateway connects parties that speak different protocols and convert between the two protocols? How do you understand the concept of gateway, reconciling any difference between the two definitions?
Ngnix can be used as a reverse proxy server, when the proxied server is a CGI server, according to its official online document. A reverse proxy server is a proxy server by the first source, and by the second source, it speaks to the two parties which it connects using the same protocol. Here, Ngnix speaks to its client using HTTP, and should Ngnix also speak HTTP or some other protocol with the CGI server?