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配置ssl实现https的方法示例
Mar 31 Servers
Nginx配置并兼容HTTP实现代码解析
Mar 31 Servers
nginx基于域名,端口,不同IP的虚拟主机设置的实现
Mar 31 Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 Servers
CentOS下安装Jenkins的完整步骤
Apr 07 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
Jun 21 Servers
windows server2008 开启端口的实现方法
Jun 25 Servers
nginx之内存池的实现
Jun 28 Servers
nginx之queue的具体使用
Jun 28 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
Aug 14 Servers
ubuntu20.04虚拟机无法上网的问题及解决
Dec 24 Servers
Valheim服务器 Mod修改安装教程 【ValheimPlus】
Dec 24 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中计算字符串相似度的函数代码
2012/12/29 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
Javascript非构造函数的继承
2015/04/27 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
python实现斗地主分牌洗牌
2020/06/22 Python
python Matplotlib模块的使用
2020/09/16 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
医院党建工作总结2015
2015/05/26 职场文书
win10下go mod配置方式
2021/04/25 Golang
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
vue elementUI表格控制对应列
2022/04/13 Vue.js