Nginx转发添加请求头信息

Nginx转发添加请求头信息

server {
        listen      80;
        server_name  localhost;
        location ^~ /demo {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header userid '123456789';
            proxy_set_header X-Nginx-Proxy true;
            proxy_pass http://10.10.10.25:443;
            }

    }

使用这种方法添加头部信息,并转发下一阶段的传递者

Nginx自定义请求头字段


 

介绍在nginx中自定义请求头字段,并在日志中展示相关字段的值: 

第一种方法: 

1 在代理nginx服务器配置中增加两个proxy_set_header字段,一个iden,一个age,分别赋值为"student","21",我们将来在日志中看到这两个常量;

server {

    server_name 127.0.0.1;

    listen 80;

    location /header {

        default_type "text/plain";

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   iden    "student";

        proxy_set_header   age     "21";

        proxy_set_header   Host    $host;

        proxy_pass http://127.0.0.1:88;

     } 

}

此时代理nginx将请求头重写,传入后端服务器,所以在此nginx服务器日志上看不到相关字段信息,为了演示方便,将此服务转发到同机器88端口的服务上;

2 配置后端服务相关配置:端口号88,返回200;

server {

    server_name 127.0.0.1;

    listen 88;

    location / {

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   Host    $host;

        default_type "text/plain";

        return 200 "OK";

    }

}

3 在 api的log_format中,增加两个字段;

"$http_iden" "$http_age"

4 curl 测试接口;

curl http://127.0.0.1/header

5 查看日志;

image.png

发现第一条日志记录有相关字段信息,是后端nginx服务的日志信息;第二条日志无字段相关信息,是代理nginx服务器的日志;

结论:使用proxy_set_header自定义字段时,后端服务器日志能获取到自定义的相关信息;

第二种方法:

1 在代理nginx服务器中配置set 关键字,定义两个字段,同样转发到统计器的88端口;

server {

    server_name 127.0.0.1;

    listen 80;

    location /header {

        set $iden "student";

        set $age "21";

        default_type "text/plain";

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   Host    $host;

        proxy_pass http://127.0.0.1:88;

    }

}

2 配置后端服务相关配置:端口号88,返回200,与第一种方法保持一致;

server {

    server_name 127.0.0.1;

    listen 88;

    location / {

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   Host    $host;

        default_type "text/plain";

        return 200 "OK";

    }

}

3 修改api的log_format中的两个字段;

"$iden" "$age"

4 curl 测试接口;

curl http://127.0.0.1/header

5 查看日志;

image.png

发现第一条日志记录无相关字段信息,是后端nginx服务的日志信息;第二条日志有字段相关信息,是代理nginx服务器的日志;

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值