免费发布信息
网站目录 » 资讯 » 互联网络 » 行业资讯 » 文章详细

Nginx反向代理服务的配置

来源:网络 浏览次数:152次 发布时间:2023-02-21

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)状态。 

相关文章