代理通常用来在多个后端服务器进行 负载均衡,或者通过HTTP等协议进行请求转发。
当NGINX代理一个请求时,会将请求转发到特定的后端服务器,然后获取到响应,将其返回给客户端。 该请求可能被转发到HTTP服务器(另一个NGINX服务器或其他服务器)或者使用特定协议的非HTTP服务器(由特定框架开发的 ,如PHP,Python等)。支持的协议包括 FastCGI , uwsgi, SCGI, memcached。
location /some/path/ {
proxy_pass http://www.example.com/link/;
}
1. fastcig_pass传递请求到FastCGI服务器。
2. uwsgi_pass传递请求到uwsgi服务器。
3. scgi_pass传递SCGI服务器。
4. memcached_pass传递请求到memcached服务器。
默认,NGINX会重新定义请求头中的两个字段 Host和 Connection, 并且忽略空字符串的字段。Host被设置为$proxy_host, Connection被设置为关闭的。
location /some/path/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8000;
}
location /some/path/ {
proxy_set_header Accept-Encoding "";
proxy_pass http://localhost:8000;
}
默认,NGINX会为后端服务器的响应提供
location /some/path/ {
proxy_buffers 16 4k; # 16个缓冲区,每个缓冲区4K(默认为一个内存页,可通过getconf PAGE_SIZE获取)
proxy_buffer_size 2k; # 用于存放响应的第一个部分信息, 比普通缓冲区4K更小
proxy_pass http://localhost:8000;
}
location /some/path/ {
proxy_buffering off;
proxy_pass http://localhost:8000;
}