Nginx中反向代理自定义HTTP头并在被代理服务器上进行获取

有两台Nginx服务器,A服务器需要反向代理B服务器,需要通过自定义HTTP头内容,A服务器中配置如下:

http {
  upstream tdt_b_server {
    server 192.168.1.10:8080 weight=1 max_fails=3 fail_timeout=30s;
  }

  server {
    listen 80;
    server_name example.com *.example.com;

    location / {
      proxy_next_upstream http_502 http_504 error timeout invalid_header;

      proxy_set_header Host  $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      #custom http header
      proxy_set_header X-Custom-Network chinatel-intranet;
      proxy_pass http://tdt_b_server;
      proxy_redirect off;
    }
  }
}

通过proxy_set_header设置自定义的HTTP头,名字可以自定义。

在被反向代理的B服务器上可以通过 $host_x-custom-network 获取到自定义的头内容,以 $host_ 开头,后面的HTTP头名称,可以在nginx日志中打印来查看内容,B服务器nginx.conf关键代码如下:

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$host_x-custom-network"';
    access_log  logs/access.log  main;
}

然后可以通过if进行条件判断,来设置不同的配置。

参考资料:
Forward request headers from nginx proxy server

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注