使用Nginx做反向代理,设置请求返回时带上被代理机器的信息

现在的大家经常使用Nginx做代理,例如用Nginx去代理Node。如果代理的Node过多,Node一旦出现问题我们怎么知道到底是哪个出了问题呢?于是就有了今天的文章,我们可以设置请求返回时带上被代理机器的一些信息。

  1. Nginx的配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    upstream 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;
    }
    #省略部分信息
    }
    上面配置中
    1
    2
    add_header Proxy-Node $upstream_addr;
    add_header Proxy-Status $upstream_status;
    设置了Proxy-Node和Proxy-Status两个header,Proxy-Node显示的是被代理的节点,Proxy-Status显示的是被代理节点的状态,配置好之后重载Nginx的配置文件。我们就可以在 Response Headers 中看到相关的信息:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    HTTP/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
  • 作者: Sam
  • 发布时间: 2018-11-08 23:16:02
  • 最后更新: 2019-12-09 23:03:26
  • 文章链接: https://ydstudios.gitee.io/post/8f4c3efa.html
  • 版权声明: 本网所有文章除特别声明外, 禁止未经授权转载,违者依法追究相关法律责任!