Mastering Nginx

(Ron) #1

NGINX as a Reverse Proxy


A reverse proxy is a web server that terminates connections with clients and


makes new ones to upstream servers on their behalf. An upstream server is
defined as a server that NGINX makes a connection with in order to fulfill the


client's request. These upstream servers can take various forms, and NGINX
can be configured differently to handle each of them.


NGINX configuration, which you have been learning about in detail, can be
difficult to understand at times. There are different directives that may be used


to fulfill similar configuration needs. Some of these options should not really be
used, as they can lead to unexpected results.


At times, an upstream server may not be able to fulfill a request. NGINX has the
capability to deliver an error message to the client, either directly from this upstream


server, from its local disk, or as a redirect to a page on a completely different server.


Due to the nature of a reverse proxy, the upstream server doesn't obtain information


directly from the client. Some of this information, such as the client's real IP address,
is important for debugging purposes, as well as tracking requests. This information


may be passed to the upstream server in the form of headers.


We will cover these topics, as well as an overview of some proxy module directives,


in the following sections:



  • Introduction to reverse proxying

  • Types of upstream servers

  • Converting an "if"-fy configuration to a more modern interpretation

  • Using error documents to handle upstream problems

  • Determining the client's real IP address

Free download pdf