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搭建rtmp直播服务器实现代码
Mar 31 Servers
Nginx + consul + upsync 完成动态负载均衡的方法详解
Mar 31 Servers
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
解析在浏览器地址栏输入一个URL后发生了什么
Jun 21 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
Apache Linkis 中间件架构及快速安装步骤
Mar 16 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
nginx 添加http_stub_status_module模块
May 25 Servers
git stash(储藏)的用法总结
Jun 25 Servers
vscode远程免密登入Linux服务器的配置方法
Jun 28 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
PHP中source #N问题的解决方法
2014/01/27 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
浅谈python中的占位符
2017/11/09 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
母亲追悼会答谢词
2014/01/27 职场文书
卫生安全检查制度
2014/02/04 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
党支部综合考察材料
2014/05/19 职场文书
八年级英语教学计划
2015/01/23 职场文书
教师自荐信范文
2015/03/06 职场文书
小学同学聚会感言
2015/07/30 职场文书