Nginx如何获取自定义请求header头和URL参数详解


Posted in Servers onJuly 23, 2022

一、获取 header 请求头

在 ngx_lua 中访问 Nginx 内置变量 ngx.var.http_HEADER 即可获得请求头HEADER的内容。

在 nginx配置中,通过$http_HEADER 即可获得请求头HEADER的内容。

案例:

$.ajax({
    .......
    headers: { 
        Accept: "application/json; charset=utf-8", 
        X-TimerLocal: "Bin"  //这个是自定义的请求头
    },
    .......
});

在nginx的location配置中,在获取header配置时,须要在header名称前面加上固定前缀“http_“,并将header名称中的“-”中划线变为下划线,举例说明:

       自定义的header名称为X-TimerLocal,那在nginx中使用$http_x_timerlocal 来获取到X-TimerLocal的值。

if ($http_x_timerlocal  = 'BIN') {
    rewrite ^(.*/timerbin/.*)$ https://$host$1 permanent;
}

包含X-TimerLocal=BIN的header请求进行判断,若是发现路径中包含/timerbin/路径时,对请求URL进行重写,从新跳转。

二、获取url参数

在 ngx_lua 中访问 Nginx 内置变量 ngx.var.arg_PARAMETER 即可获得GET参数PARAMETER的内容。

在 nginx配置中,通过$arg_PARAMETER 即可获得GET参数PARAMETER的内容。

案例:

通过 http://www.test.com?name=hello&id=123 来验证url的请求参数,能够在nginx中获取到,只需要修改nginx.conf 配置文件如下,就可以在access.log中看到id和name在log中

http {
    include       mime.types;
    default_type  application/octet-stream;


    log_format main '{ "@timestamp": "$time_iso8601", '
    '"servername": "$http_host", '
    '"id": "$arg_id",'
    '"name": "$arg_name",'
    '"remote_addr": "$remote_addr",'
    '"referer": "$http_referer",'
    '"request": "$request",'
    '"request_time": "$request_time",'
    '"status": $status,'
    '"bytes":$body_bytes_sent,'
    '"agent": "$http_user_agent",'
    '"x_forwarded": "$http_x_forwarded_for",'
    '"upstr_addr": "$upstream_addr",'
    '"upstr_host": "$upstream_http_host",'
    '"ups_resp_time": "$upstream_response_time" }';


    access_log  logs/access.log main;
    server_names_hash_bucket_size 128;

总结

到此这篇关于Nginx如何获取自定义请求header头和URL参数的文章就介绍到这了,更多相关Nginx自定义请求header头和URL参数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Servers 相关文章推荐
nginx proxy_cache 缓存配置详解
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
Nginx已编译的nginx-添加新模块
Apr 01 Servers
Nginx反向代理学习实例教程
Oct 24 Servers
nginx常用配置conf的示例代码详解
Mar 21 Servers
CentOS7和8下安装Maven3.8.4
Apr 07 Servers
Tomcat配置访问日志和线程数
May 06 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
GPU服务器的多用户配置方法
Jul 07 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 Servers
Apache自带的ab压力测试工具的实现
Jul 23 #Servers
apache虚拟主机配置的三种方式(小结)
Jul 23 #Servers
django项目、vue项目部署云服务器的详细过程
Jul 23 #Servers
Nginx报错104:Connection reset by peer问题的解决及分析
Jul 23 #Servers
centos环境下nginx高可用集群的搭建指南
Nginx如何配置根据路径转发详解
Jul 23 #Servers
Linux中一对多配置日志服务器的详细步骤
Jul 23 #Servers
You might like
c#中的实现php中的preg_replace
2009/12/21 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
JS Timing
2007/04/21 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
详解Python3中yield生成器的用法
2015/08/20 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python zip()函数使用方法解析
2019/10/31 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
导致python中import错误的原因是什么
2020/07/01 Python
mysql有关权限的表都有哪几个
2015/04/22 面试题
迟到检讨书大全
2014/01/25 职场文书
cf战队收人口号
2014/06/21 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python