正向代理它的上游是客户端,如它的目标就是通过请求获取返回值。
反向代理的上游是服务器,根据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上游服务器

文nKkCJ
1 声望1 粉丝