正向代理它的上游是客户端,如它的指标就是通过申请获取返回值。
反向代理的上游是服务器,依据 url 来匹配散发申请,匹配到后能够指定对应服务器的 uri 去进行解决
location 中的配置优先级 > server 部分配置优先级
1、无关配置
有用到:
proxy_pass 该指令有一个参数,URL 申请将会被转换
rewrite(改写)
两个例外:1、当 location 匹配应用了正则去匹配时会间接代理到匹配到的 url 的地址,而不会在通过 proxy_pass 进行传递
2、挡在 location 中应用 rewrite 的话优先应用 rewrite 改写的 url,break 示意立刻进行 rewrite 模块的所有指令。例:location ~</local {proxy_pass http://localhost:8080;}
location / {rewrite /(.*)$/ index.php?page=$1 break;
proxy_pass http://localhost:8080;
}
proxy_pass_request_body 如果设置为 off,那么该指令将会阻止申请体发送到上游服务器
proxy_pass_request_headers 如果设置为 off,该指令则会阻止申请头发送到上游服务器
proxy_read_timeout 该指令给出连贯敞开前从上游服务器两次胜利的读操作耗时 如果上游服务器解决申请比较慢,那么该指令应该将该值设置得高一些
proxy_send_timeout 该指令指定在连贯敞开之前,向上游服务器两次写胜利的操作实现所需的工夫长度
proxy_set_header 该指令重写申请头,将申请头的信息发送到上游服务器头的内容,能够通过它将某个头的值置空
没有用到
proxy_redirect 该指令重写来自于上游服务器的 location 和 refresh 头,这对于某种利用框架十分有用
proxy_set_body 发送到上游服务器的申请体可能会被该指令批改
proxy_temp_file_write_size 该指令限度在同 工夫内缓冲到 个临时文件的数据量 以使得 Nginx 不会过长地阻止单个申请
proxy_temp_path 该指令设定临时文件的缓冲 用于缓冲从上游服务器来的文件,能够设定目录的档次
例子:
proxy_redirect off; #敞开对 location 头的重写
proxy_set_header Host $host ; #将申请头中 Host 申请头的值发送到服务器,proxy_set_header Host $host:$proxy_port; $host:$proxy_port 示意服务器名称和端口一起传递
proxy_set_header X-Real-IP $remote_addr; #传递客户端 ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
client_max_body_size lOm ; #客户端上传文件限度。不能超过限度
client_body_buffer_size 128k;
proxy_connect_timeout 30 ; #与上游服务器建设连贯时 nginx 等带是长单位 S
proxy_send_timeout 15 ;
proxy_read_timeout 15; #send 和 read 指令定义了 Nginx 上游服务器连贯胜利的两次操作期待的工夫。proxy_send_lowat 12000; #在 FreeBSD 零碎下无效,并且在该协定下传输数据之前指定套接字发送缓冲应该包容的字节数。proxy_buffer_size 4k; #这些缓冲管制了 Nginx 如何疾速地响应用户的申请。proxy_buffers 32 4k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k; #指令管制 worker 程阻塞后盾数据的工夫。值越大,解决阻塞的工夫越长。
2、upstream 模块
upstream 模块将会启用 个新的配置区段,在该区段定义了一组上游服务器。这些服务器可能被设置了不同的权重(权重越高的上游服务器将会被 Nginx 传递越多的连贯〉,也可能是不同的类型(TCP UNIX 域),也可能出于须要对服务器进行保护,故而标记为 down
其中的指令
ip_hash 该指令通过 IP 地址的哈希值确保客户端平均地连贯所有服务器,键值基于 C 类地址
keepLive 该指令指定每 worker 过程缓存到上游服务器的连接数。在应用 HTTP 连贯时,proxy_http_version 应该设置为 1.1,并且将 proxy_setheader 设置为 Connection””
least_conn 该指令激活负载平衡算法,将申请发送到沉闷连接数起码的那台服务器
server
该指令为 upstream 定义 个服务器地址(带有 TCP 端口号的域名、IP 地址,或者是 UNIX 域套接字〉和可选参数。参数如下。
weight:该参数设置 个服务器的优先级优于其余服务器。
max_fails 该参数设置在 fail_timeout 工夫之内尝试对 个服务器连贯的最大次数,如果超过这个次数,那么就会被标记为 down
fail_timeout 在这个指定的工夫内服务器必须提供响应,如果在这个工夫内没有收到响应,那么服务器将会被标记为 down 状态。
backup 一旦其余服务器宕机,那么仅有该参数标记的机器才会接管申请。
down:该参数标记为 一个服务器不再承受任何申请
例:
upstream apache {
server 127.0.0.1: 8080; #以后服务器打 8080 端口
keepalive 32; #放弃 32 个连贯关上
}
location / {
proxy_http_version 1.1;
proxy set header Connection””;
proxy_pass http://apache;
}
3、单个上游服务器
server {
location I {proxy_pass http://localhost:BOBO;}
}
4、多个上游服务器
upstream app {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
server {
location I {proxy_pass http://app;}
}
应用这个配置,Nginx 将会通过轮询的形式将间断的申请传递给 个上游服务器。在一个应用程序仅解决一个申请时,这个配置很有用。你心愿 Nginx 应用这种形式解决客户端通信,以便应用程序不会过载。
5、非 Http 型上游服务器
Memcached 上游服务器:连贯咱们能够通过 telnet 命令并指定主机 ip 和端口来连贯 Memcached 服务
FastCGL 上游服务器:疾速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与 Web 服务器通信的协定。FastCGI 是晚期通用网关接口(CGI)的增強版本。SCGL 上游服务器:uwSGL 上游服务器