1、proxy_pass指令
该指令用来设置被代理服务器的地址,可以是主机名称、IP地址加端口号等形式。其语法结构为:
proxy_pass URL;
其中,URL为要设置的被代理服务器的地址,包含传输协议、主机名称或IP地址加端口号、URI等要素。传输协议通常是“http”或者“https”。指令同时还接受以“unix”开始的UNIX-domain套接字路径。
2、proxy_hide_header指令
该指令用于设置Nginx服务器在发送HTTP响应时,隐藏一些头域信息。其语法结构为:
proxy_hide_header field;
其中,field为需要隐藏的头域。该指令可以在http块、server块或者location块中进行配置。
3、proxy_pass_header指令
默认情况下,Nginx服务器在发送响应报文时,报文头中不包含“Date”、“Server”、“X-Accel”等来自被代理服务器的头域信息。该指令可以设置这些头域信息以被发送,其语法结构为:
proxy_pass_header field;
其中,field为需要发送的头域。该指令可以在http块、server块或者location块中进行配置。
4、proxy_pass_request_body指令
该指令用于配置是否将客户端请求的请求体发送给代理服务器,其语法结构为:
proxy_pass_request_body on | off;
默认设置为开启(on),开关可以在http块、server块或者location块中进行配置。
5、proxy_pass_request_headers指令
该指令用于配置是否将客户端请求的请求头发送给代理服务器,其语法结构为:
proxy_pass_request_headers on | off;
默认设置为开启(on),开关可以在http块、server块或者location块中进行配置。
6、proxy_set_header指令
该指令可以更改Nginx服务器接收到客户端请求的请求头信息,然后将新的请求头发送给被代理的服务器,其语法结构为:
proxy_set_header field value;
field:要更改的信息所在的头域。
value:更改的值,支持使用文本、变量或者变量的组合。
7、proxy_set_body指令
该指令可以更改Nginx服务器接收到的客户端请求的请求体信息,然后将新的请求体发送给被代理的服务器,其语法结构为:
proxy_set_body value;
其中,value为更改的信息,支持使用文本、变量或者变量的组合。
8、proxy_bind指令
该指令可以强制将与代理主机的连接绑定到指定的IP地址。通俗来讲就是,在配置了多个基于名称或者基于IP的主机的情况下,如果我们希望代理连接由指定的主机处理,就可以使用该指令进行配置,其语法结构为:
proxy_bind address;
其中,address为指定主机的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_send_timeout time;
其中,time为设置的超时时间,默认为60s。
12、proxy_http_version指令
该指令用于设置用于Nginx服务器提供代理服务的HTTP协议版本,其语法结构为:
proxy_http_version 1.0 | 1.1;
默认设置为1.0版本。1.1版本支持upsteam服务器组设置中的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_headers指令
该指令用于设置一些HTTP响应头中的头域,Nginx服务器接收到被代理服务器的响应数据后,不会处理被设置的头域,其语法结构为:
proxy_ignore_headers field ...;
其中,field为要设置的HTTP响应头的头域,例如:“X-Accel-Redirect”、“X-Accel-Expires”、“Expires”、“Cache-Control”或“Set-Cookie”等。
16、proxy_redirect指令
该指令用于修改被代理服务器返回的响应头中的Location头域和Refresh头域,与proxy_pass指令配合使用。比如,Nginx服务器通过proxy_pass指令将客户端的请求地址重写为被代理服务器的地址,那么Nginx服务器返回给客户端的响应头中Location头域显示的地址就应该和客户端发起请求的地址相对应,而不是代理服务器直接返回的地址信息,否则就会出问题。该指令解决了这个问题,可以把代理服务器返回的地址信息更改为需要的地址信息,其语法结构为:
结构1:proxy_redirect redirect replacement;
结构2:proxy_redirect default;
结构3:proxy_redirect off;
redirect:匹配Location头域值的字符串,支持变量的使用和正则表达式。
replacement:用于替换redirect变量内容的字符串,支持变量的使用。
结构2使用default,代表使用location块的URI变量作为replacement,并使用proxy_pass变量作为redirect。
使用结构3可以将当前作用域下所有的proxy_redirect指令配置全部设置为无效。
17、proxy_intercept_errors指令
该指令用于配置一个状态是开启还是关闭。在开启该状态时,如果被代理的服务器返回的HTTP状态代码为400或者大于400,则Nginx服务器使用自己定义的错误页了;如果是关闭该状态,Nginx服务器直接将被代理服务器返回的HTTP状态返回给客户端,其语法结构为:
proxy_intercept_errors on | off;
18、proxy_headers_hash_max_size指令
该指令用于配置存放HTTP报文头的哈希表的容量,其语法结构为:
proxy_headers_hash_max_size size;
其中,size为HTTP报文头哈希表的容量上限,默认为512个字符。
19、proxy_headers_hash_bucket_size指令
该指令用于设置Nginx服务器申请存放HTTP报文头的哈希表容量的单位大小,其语法结构为:
proxy_headers_hash_bucket_size size;
其中,size为设置的容量,默认为64个字符。
20、proxy_next_upstream指令
在配置Nginx服务器反向代理功能时,如果使用upstream指令配置了一组服务器作为被代理服务器,服务器组中各服务器的访问规则遵循upstream指令配置的轮询规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一个组内服务器处理,其语法结构为:
proxy_next_upstream status ...;
其中,status为设置的服务器返回状态,可以是一个或者多个。这些状态包括:
error:在建立连接、向被代理的服务器发送请求或者读取响应头时服务器发生连接错误。
timeout:在建立连接、向被代理的服务器发送请求或者读取响应头时服务器发生连接超时。
invalid_header:被代理的服务器返回的响应头为空或者无效。
http_500 | http_502 | http_503 | http_504 | http_404:被代理的服务器返回500、502、503、504或者404状态代码。
off:无法将请求发送给被代理的服务器。
21、proxy_ssl_session_reuse指令
该指令用于配置是否使用基于SSL安全协议的会话连接被代理的服务器,其语法结构为:
proxy_ssl_session_reuse on | off;
默认设置为开启(on)状态,如果我们在错误日志中发现“SSL3_GET_FINISHED:digest check failed”的情况,可以将该指令配置为关闭(off)状态。