购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.4 proxy代理

Nginx使用ngx_http_proxy_module来完成对后端服务的代理。这一节,我们将一起来见识Nginx最流行的proxy代理功能。

3.4.1 proxy_pass请求代理规则

语法:proxy_pass URL;

环境:location、if in location、limit_except

含义:将请求代理到后端服务器,设置后端服务的IP地址、端口号以及HTTP/HTTPS。

示例:将URI为/test的请求代理到127.0.0.1上,端口号为81,使用HTTP,代码如下。

在代理过程中,URL的传递会有如下几种变化:

注意: 如果location块配置的URI使用了正则表达式,那么在使用proxy_pass时,就不能将URI配置到 proxy_pass指定的后端服务器的最后面了,即禁止使用类似 proxy_pass http://127.0.0.1:81/abc/的方式,否则可能会导致一些不可预测的问题出现。

3.4.2 减少后端服务器的网络开销

有很多请求的内容只和URL有关,即后端服务器不需要读取请求体和请求头,只根据URL的信息即可生成所需的数据。在这种情况下,可以使用如下两个指令,并将其配置为off,禁止传输请求体和请求头。

· proxy_pass_request_body:确定是否向后端服务器发送HTTP请求体,支持配置的环境有http、server、location。

· proxy_pass_request_headers:确定是否向后端服务器发送HTTP请求头,支持的配置的环境有http、server、location。

通过配置以上两个指令,后端服务接收到的流量将会变小。

3.4.3 控制请求头和请求体

在请求被代理到后端服务器时,可以通过表3-2所示的指令去控制请求头和请求体。

表3-2 请求头和请求体的控制指令

注意: 在设置proxy_set_header后,下一层级会继承这个请求头的内容。但如果下一层级也配置了proxy_set_header指令,那么当请求到达下一层级时,在上一层级配置的请求头将会被全部清除。

举例如下:

如果要A和AB两个请求头都保留下来,可以用下面的方法:

3.4.4 控制请求和后端服务器的交互时间

控制请求和后端服务器交互时间的指令见表3-3。

表3-3 控制请求和后端服务器交互时间的指令

如果使用默认的设置,即60s,请求可能需要等待很久才会做出下一步反应,而客户端往往不会等待那么久,所以需要合理设置交互时间,并且最好能在超时后做一些合理的措施。如搭配使用proxy_next_upstream*命令,这将在下一节进行说明。 O0wEQjIhC5jbtb7A8BMZ+Vu0MDczr+m9YcuImuox+46a1DCXBhlUyJtDRPsiP8Hy

点击中间区域
呼出菜单
上一章
目录
下一章
×