nginx怎么添加请求头?

邀请回答
提问于 2020-05-08 16:07
516 次浏览
共1个回答

发表评论
  • 13191816265@qq.com
    2020-05-08 16:18

    介绍在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服务器的日志;

    0
    回复
    举报
提问者

黄开健

暂无个人介绍

  • 0

    文章

  • 1

    粉丝

  • 2

    被赞

黄开健
按Enter键发送
您已邀请位用户
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5