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 相关文章推荐
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
如何在centos上使用yum安装rabbitmq-server
Mar 31 Servers
nginx+lua单机上万并发的实现
May 31 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
Linux、ubuntu系统下查看显卡型号、显卡信息详解
Apr 07 Servers
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
Apr 29 Servers
Nginx 常用配置
May 15 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
git stash(储藏)的用法总结
Jun 25 Servers
使用 DataAnt 监控 Apache APISIX的原理解析
Jul 07 Servers
nginx静态资源的服务器配置方法
Jul 07 Servers
Fluentd搭建日志收集服务
Sep 23 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
php简单防盗链实现方法
2015/07/29 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Python获取apk文件URL地址实例
2013/11/01 Python
urllib2自定义opener详解
2014/02/07 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
诚信考试倡议书
2014/04/15 职场文书
红色故事演讲稿
2014/05/22 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
银行先进个人总结
2015/02/15 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
redis数据一致性的实现示例
2022/03/18 Redis