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常用命令放入shell脚本详解
Mar 31 Servers
解析在浏览器地址栏输入一个URL后发生了什么
Jun 21 Servers
Linux安装apache服务器的配置过程
Nov 27 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
深入解析Apache Hudi内核文件标记机制
Mar 31 Servers
从零开始在Centos7上部署SpringBoot项目
Apr 07 Servers
Win10 Anaconda安装python-pcl
Apr 29 Servers
利用Apache Common将java对象池化的问题
Jun 16 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Windows server 2016服务器基本设置
Aug 14 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
python实现实时监控文件的方法
2016/08/26 Python
python正则分析nginx的访问日志
2017/01/17 Python
windows下python安装pip图文教程
2018/05/25 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
大三自我鉴定范文
2013/10/05 职场文书
八年级音乐教学反思
2014/01/09 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
奖金申请报告模板
2015/05/15 职场文书
MYSQL如何查看进程和kill进程
2022/03/13 MySQL