反向代理
反向代理
反向代理(Reverse Proxy)是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
指令介绍
proxy_pass
设置连接被代理服务器的协议、IP 地址或套接字,也可以是域名或 upstream 定义的服务器组。
Syntax:proxy_pass URL;
Default:—
Context:location, , if in locationlimit_exceptproxy_hide_header
指定被代理服务器响应数据中不向客户端传递的 HTTP 头字段名称。
Syntax:proxy_hide_header field;
Default:—
Context:http, server, locationproxy_http_version
设置用于代理的 HTTP 协议版本,若使用 keepalive 或 NTLM 认证,建议指令值设置为 1.1。
Syntax:proxy_http_version 1.0 | 1.1;
Default:proxy_http_version 1.0;
Context:http, server, locationproxy_redirect
替换被代理服务器返回的响应头中属性字段 location 或 Refresh 的值,并返回给客户端。指令值为 default 时,使用 proxy_pass 指令值的内容进行替换。
Syntax:proxy_redirect default;
proxy_redirect off;
proxy_redirect redirect replacement;
Default:proxy_redirect default;
Context:http, server, locationproxy_pass_header
默认配置下 Njet 不会将头属性字段 Status 和 X-Accel-… 传递给客户端,可通过该指令开放传递。
Syntax:proxy_pass_header field;
Default:—
Context:http, server, locationproxy_set_header
在转发给被代理服务器前,修改或添加客户端的请求头属性字段
Syntax:proxy_set_header field value;
Default:proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context:http, server, locationproxy_socket_keepalive
设置 Njet 与被代理服务器的 TCP keepalive 行为的心跳检测机制,默认使用操作系统的 socket 配置。若指令值为 on,则开启 SO_KEEPALIVE 选项进行心跳检测
Syntax:proxy_socket_keepalive on | off;
Default:proxy_socket_keepalive off;
Context:http, server, location配置示例
upstream backend1{
zone upstream_backend1 64k;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
upstream backend2{
zone upstream_backend2 64k;
server 127.0.0.1:8003;
}
server{
location /njet {
proxy_http_version 1.1;
proxy_pass http://http1;
proxy_hide_header Vary;
proxy_pass_header server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://http1 http://http2;
proxy_socket_keepalive on;
}
}