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域名转发使用场景代码实例
Mar 31 Servers
制作能在nginx和IIS中使用的ssl证书
Jun 21 Servers
nginx请求限制配置方法
Jul 09 Servers
Nginx进程调度问题详解
Sep 25 Servers
Nginx反向代理学习实例教程
Oct 24 Servers
Nginx配置https的实现
Nov 27 Servers
iSCSI服务器CHAP双向认证配置
Apr 01 Servers
Windows server 2012 R2 安装IIS服务器
Apr 29 Servers
聊聊配置 Nginx 访问与错误日志的问题
May 25 Servers
nginx之queue的具体使用
Jun 28 Servers
教你nginx跳转配置的四种方式
Jul 07 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实现的ping端口函数实例
2014/11/12 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
Prototype Function对象 学习
2009/07/12 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
2017/05/12 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
django配置app中的静态文件步骤
2020/03/27 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
医大实习自我鉴定
2013/12/07 职场文书
中英文自我评价常用句型
2013/12/19 职场文书
销售人员自我评价
2014/02/01 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
采购助理岗位职责
2014/02/16 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
2015年中个人总结范文
2015/03/10 职场文书
创业计划书之美甲店
2019/09/20 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis