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 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
nginx简单配置多个server的方法
Mar 31 Servers
Nginx 根据URL带的参数转发的实现
Apr 01 Servers
详解Nginx启动失败的几种错误处理
Apr 01 Servers
CentOS7和8下安装Maven3.8.4
Apr 07 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
Tomcat starup.bat 脚本实现开机自启动
Apr 20 Servers
nginx配置限速限流基于内置模块
May 02 Servers
nginx实现多geoserver服务的负载均衡
May 15 Servers
Linux磁盘管理方法介绍
Jun 01 Servers
Nginx安装配置详解
Jun 25 Servers
修改Nginx配置返回指定content-type的方法
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
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
js中的string.format函数代码
2020/08/11 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
毕业自荐信
2013/12/16 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
世界名著读书笔记
2015/06/25 职场文书
信息技术课教学反思
2016/02/23 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS