
Note that in these cases, the rules for specifying addresses may be different. memcached_pass passes a request to a memcached server.scgi_pass passes a request to an SCGI server.uwsgi_pass passes a request to a uwsgi server.fastcgi_pass passes a request to a FastCGI server.To pass a request to a non-HTTP proxied server, the appropriate **_pass directive should be used: If the address is specified without a URI, or it is not possible to determine the part of URI to be replaced, the full request URI is passed (possibly, modified). For example, here the request with the /some/path/page.html URI will be proxied to. If the URI is specified along with the address, it replaces the part of the request URI that matches the location parameter. Note that in the first example above, the address of the proxied server is followed by a URI, /link/. To pass a request to an HTTP proxied server, the proxy_pass directive is specified inside a location. Supported protocols include FastCGI, uwsgi, SCGI, and memcached.

It is possible to proxy requests to an HTTP server (another NGINX server or any other server) or a non-HTTP server (which can run an application developed with a specific framework, such as PHP or Python) using a specified protocol. When NGINX proxies a request, it sends the request to a specified proxied server, fetches the response, and sends it back to the client. Proxying is typically used to distribute the load among several servers, seamlessly show content from different websites, or pass requests for processing to application servers over protocols other than HTTP. You will learn how to pass a request from NGINX to proxied servers over different protocols, modify client request headers that are sent to the proxied server, and configure buffering of responses coming from the proxied servers. This article describes the basic configuration of a proxy server. Configure NGINX as a reverse proxy for HTTP and other protocols, with support for modifying request headers and fine-tuned buffering of responses.
