鼎鼎知识库
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

03反向代理.md 4.8KB

反向代理简介

反向代理(reverse proxy)其实就是相当于服务器,这个服务器成为了客户端和上游服务器(upstream server)的连接者。也可以看作是客户端请求的终结者,重新新一个连接到上游服务器的新连接。

一个经典的配置

location /uri {
	prxoy_pass http://localhost:8000/newuri;
}

当客户端请求uri的时候,proxy_pass代表着上游服务器接收的形式。

一个客户端请求想顺利地来到上游服务器,需要满足两个条件:

  1. 路由地址匹配
  2. 没有重写模块

以下包括了重写模块

location / {
	rewrite /(.*)$ /index.php?page=$1 break;
	
	proxy_pass http://localhost:8000/index;
}

以上,proxy_pass中的配置就不会生效。

代理模块

指令 说明
proxy_connect_timeout 从接收请求到连接至上游服务器的等待时间
proxy_cookie_domain 替代上游服务器来的Set-Cookie头中的domain属性,domain属性值通常会被替换成一个字符串、正则表示、变量
proxy_cookie_path 替代上游服务器来的Set-Cookie中的path属性
proxy_header_hash_bucket_size 请求头的最大值
proxy_hide_headeer
proxy_http_version 使用的HTTP协议版本, keepalive连接就使用1.1
proxy_ignore_client_abort 当设置为onNginx不会放弃同上游服务器的连接
proxy_ignore_headers
proxy_intercept_errors 启用显示配置的eror_page错误,而不显示来自上游服务器的直接响应
proxy_max_temp_file_size 当响应与内存缓冲区不匹配时,该指令给出溢出文件的最大值
proxy_pass
proxy_pass_header 覆盖proxy_hide_header中的设置,允许这些头传递到客户端
proxy_pass_request_body 如果设置为off,那么指令将会组织请求体发送到上游服务器
proxy_pass_request_headers 如果设置为off,那么指令将会组织请求头发送到上游服务器
proxy_read_timeout 连接关闭前从上游服务器两次成功读操作耗时。如果上游服务器处理慢,这里设置高些。
proxy_redirect 重写来之上游服务器的LocationRefresh头,对于某些应用程序框架有用
proxy_send_timeout 在请求关闭之前,向上游服务器两次写成功操作完成所需要的时间
proxy_set_body 发送到上游服务器的请求体在这里被改写
proxy_set_header
proxy_temp_file_write_size 限制同一时间内缓冲到一个临时文件的数据量
proxy_temp_path 设定目录的层次

带有cookie的遗留应用程序

在一个共同的端点服务器后放置多个遗留应用程序。

upstream模块

指令 说明
ip_hash 根据ip地址的哈希值确保客户端均匀地连接所有服务器。键值基于c类地址
keepalive 指定每一个worker进程缓存到上游服务器的连接数。使用HTTP连接时,proxy_http_version设置为1.1,并且将proxy_set_header设置为Connection “”
least_conn 激活负载均衡算法,将请求发送到活跃连接数最少的那台服务器
server 为upstream定义一个服务器地址,带有TCP端口号的域名,IP地址,或者UNIX域套接字。参数包括:weight, max_fails, fail_timeout, backup,down

保持活动连接

Nginx会为每一个worker进程保持同上游服务器的连接。如果Nginx与上游服务器通过HTTP/1.1进行对话,那么NginX会使用HTTP/1.1协议的持久连接机制维护这些打开的连接。

upstream apche {
	server 127.0.0.1:8080;
	keepalive 32;
}

location / {
	proxy_http_version 1.1;
	proxy_set_header Connection "";
	proxy_pass http://apche;
}

负载均衡

三种负载均衡算法。

使用错误文件处理上游服务器问题

当上游服务器无法响应请求,提供对外展示的错误文件。