现在的大家经常使用Nginx做代理,例如用Nginx去代理Node。如果代理的Node过多,Node一旦出现问题我们怎么知道到底是哪个出了问题呢?于是就有了今天的文章,我们可以设置请求返回时带上被代理机器的一些信息。
- Nginx的配置上面配置中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24upstream usa {
server 127.0.0.1:3001;
}
server {
listen 80 ;
server_name xxx.com ;
error_log /var/log/nginx/tianxingusa_error.log error;
access_log /var/log/nginx/tianxingusa_accss.log main;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
add_header Proxy-Node $upstream_addr;
add_header Proxy-Status $upstream_status;
proxy_http_version 1.1;
proxy_pass http://usa;
}
省略部分信息
}设置了Proxy-Node和Proxy-Status两个header,Proxy-Node显示的是被代理的节点,Proxy-Status显示的是被代理节点的状态,配置好之后重载Nginx的配置文件。我们就可以在 Response Headers 中看到相关的信息:1
2add_header Proxy-Node $upstream_addr;
add_header Proxy-Status $upstream_status;1
2
3
4
5
6
7
8
9
10
11
12
13HTTP/1.1 200 OK
Server: nginx
Date: Fri, 09 Nov 2018 03:07:55 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1227
Connection: keep-alive
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Fri, 26 Oct 2018 10:11:49 GMT
ETag: W/"4cb-166afdbcd67"
Proxy-Node: 127.0.0.1:3001
Proxy-Status: 200