Nginx的正向代理与反向代理详解(4)

官方文档中对该指令的解释是,强制将与代理主机的连接绑定到指定的IP地址。通俗来讲就是,在配置多个基于名称或者基于IP地址。通俗来讲就是,在配置了多个基于名称或者基于IP主机的情况下,如果我们希望代理连接由指定的主机处理,就可以使用该指令进行配置,其语法结构为:

proxy_bind adress;

  其中,adress为指定主机的IP地址。 

9.proxy_connect_timeout指令

该指令配置Nginx服务器与后端被代理服务器尝试建立连接的超时时间,其语法结构为:

proxy_connect_timeout time;

其中,time为设置的超时时间,默认60s。

10.proxy_read_timeout指令

该指令配置Nginx服务器向后端被代理服务器(组)发出的read请求后,等待响应的超时时间,其语法结构为:

proxy_read_timeout time;

其中,time为设置的超时时间,默认60s。

11.proxy_send_timeout指令

该指令配置Nginx服务器向后端被代理服务器(组)发出的write请求后,等待响应的超时时间,其语法结构为:

proxy_write_timeount time

其中,time为设置的超时时间,默认60s。

12.proxy_http_version指令

该指令设置用于Nginx服务器提供代理服务的HTTP协议版本,其语法结构为:

proxy_http_version 1.0 |  1.1;

默认版本为1.0版本,1.1版本支持upstream服务器组设置的keepalive指令。

13.proxy_method指令

该指令用于设置Nginx服务器请求被代理服务器时使用的请求方法,一般为POST或者GET。设置了该指令,客户端的请求方法将被忽略。其语法结构为:

proxy_method method;

其中,method的值可以设置为POST或者GET,注意不加引号。

14.proxy_ignore_client_abort指令

该指令用过设置在客户端中断网络请求时,Nginx服务器是否中断对被代理服务器的请求,其语法结构为:

proxy_ignore_client_abort on | off

默认设置为off,当客户端中断网络请求时,Nginx服务器中断对被代理服务器的请求。

15.proxy_ignore_header指令

该指令用于设置一些HTTP响应头的头域,Nginx服务器接收到被代理服务器的响应数据后,不会处理被设置的头域。其语法结构为:

proxy_ignore_header field ...;

其中,field为要设置的HTTP响应头的头域,例如“X-Accel-Redirect”、“X-Accel-Expires”、“Cache-Control”、“Expires”或“Set-Cookie”等。

16.proxy_redirect指令

该指令用于修改被代理服务器返回的响应头中的Location头域和“Refresh”头域,与proxy_pass指令配合使用。比如,Nginx服务器通过proxy_pass指令将客户端的请求地址重写为被代理服务器的地址,那么Nginx服务器返回客户端的响应头中“Location”头域显示的地址就应该和客户端发起请求的地址相对应,而不是代理服务器直接返回的地址信息,否则就会出问题。该指令解决了这个问题,可以把代理服务器返回的地址信息更改为需要的地址信息。其语法结构为:

proxy_redirect redirect replacement

proxy_redirect default;

proxy_redirect off;

redirect,匹配“Location”头域值的字符串,支持变量的使用和正则表达式。

replacement,用于替换redirect变量内容的字符串,支持变量的使用。

该指令的用法我们通过几个配置实例来解释。

对于第1个结构,假设被代理服务器返回的响应头中的“Location”头域为:

Location: http://localhost:8081/proxy/some/uri

该指令设置为:

proxy_redirect http://localhost:8081/proxy/ http://myweb/fronted/;

Nginx服务器会将“Location”头域信息更改为:

Location:http://myweb/frontend//some/uri;

这样,客户端收到的响应信息头部中的“Location”头域就被更改了。

结构 2使用default,代表使用location块的uri变量作为replacement,并使用proxy_pass变量作为redirect。请看下面两段配置,它们的配置效果是等同的。

#配置1

location /server/

{

   proxy_pass http://proxyserver/source/;

   proxy_redirect default;

 

}

 

#配置2

location /server/

{

   proxy_pass http//proxyserver/source/;

   proxy_redirect http://proxyserver/source/ /server/;

 

}

使用结构3可以将当前作用域下所有的proxy_redirect指令全部设置为无效。

17.proxy_intercept_errors指令

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/cc35ad9c874a2f03153b68bc14463b1b.html