全局设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
http {    
...
fastcgi_connect_timeout 60;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
...
}
server {
listen 8888;
location / {
proxy_pass http://pdfs;
proxy_connect_timeout 60;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}

四层负载配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# upstream模块代理设置
upstream credit-gateway {
#hash $remote_addr consistent;
{% for host in credit_gateway_host %}
server {{ host }}:{{ credit_gateway_port }};
{% endfor %}
}

# server设置
server {
listen {{ credit_gateway_port }};
proxy_pass credit-gateway;
proxy_timeout 300;
proxy_connect_timeout 60;
access_log logs/upstream-gateway.log proxy;
}

反向代理配置

1
2
3
4
5
6
7
8
9
10
11
12
# http模块代理设置
location /login/ {
proxy_pass http://gateway_addr/dics/env_path/login/;
proxy_redirect off;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_send_timeout 300;
proxy_read_timeout 300;
}

参数详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
keepalive_timeout:	
语法 keepalive_timeout timeout [ header_timeout ]
默认值 75s
上下文 http server location
说明 第一个参数指定了与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。可选的第二个参数指定了在响应头Keep-Alive: timeout=time中的time值。这个头能够让一些浏览器主动关闭连接,这样服务器就不必要去关闭连接了。没有这个参数,nginx不会发送Keep-Alive响应头(尽管并不是由这个头来决定连接是否“keep-alive”)
两个参数的值可并不相同
proxy_connect_timeout
语法 proxy_connect_timeout time
默认值 60s
上下文 http server location
说明 该指令设置与upstream server的连接超时时间,有必要记住,这个超时不能超过75秒。
这个不是等待后端返回页面的时间,那是由proxy_read_timeout声明的。如果你的upstream服务器起来了,但是hanging住了(例如,没有足够的线程处理请求,所以把你的请求放到请求池里稍后处理),那么这个声明是没有用的,由于与upstream服务器的连接已经建立了。
proxy_timeout
语法 proxy_timeout time
默认值 10分钟
说明 接收后端服务器的响应超时时间
proxy_read_timeout
语法 proxy_read_timeout time
默认值 60s
上下文 http server location
说明 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。

proxy_send_timeout
语法 proxy_send_timeout time
默认值 60s
上下文 http server location
说明 这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接

proxy_upstream_fail_timeout(fail_timeout)
语法 server address [fail_timeout=30s]
默认值 10s
上下文 upstream
说明 Upstream模块下 server指令的参数,设置了某一个upstream后端失败了指定次数(max_fails)后,该后端不可操作的时间,默认为10