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的默认端口
Mar 31 Servers
nginx对http请求处理的各个阶段详析
Mar 31 Servers
阿里云Nginx配置https实现域名访问项目(图文教程)
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
NGINX 权限控制文件预览和下载的实现原理
Jan 18 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
nginx常用配置conf的示例代码详解
Mar 21 Servers
Nginx虚拟主机的配置步骤过程全解
Mar 31 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
Zabbix对Kafka topic积压数据监控的解决方案
Jul 07 Servers
Windows server 2003卸载和安装IIS的图文教程
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
smarty实例教程
2006/11/19 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
使用Python写个小监控
2016/01/27 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
python 实现两个线程交替执行
2020/05/02 Python
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
地球一小时倡议书
2014/04/15 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android