Nginx 获取自定义请求header头和URL参数

这篇具有很好参考价值的文章主要介绍了Nginx 获取自定义请求header头和URL参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、获取 header 请求头

  1. 在 ngx_lua 中访问 Nginx 内置变量 ngx.var.http_HEADER 即可获得请求头HEADER的内容。
  2. 在 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参数

  1. 在 ngx_lua 中访问 Nginx 内置变量 ngx.var.arg_PARAMETER 即可获得GET参数PARAMETER的内容。
  2. 在 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;
 文章来源地址https://www.toymoban.com/news/detail-443511.html

到了这里,关于Nginx 获取自定义请求header头和URL参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ajax请求携带自定义请求头header(跨域和同域)

    1. ajax跨域请求(无cookie、无header)案例(java) (1)启动一个java web项目,配置两个域名(host),czt.ming.com、czt.casicloud.com, java后端代码如下 : 注意:Access-Control-Allow-Origin (2)前端页面代码如下: (3)测试ajax跨域请求: 通过http://czt.casicloud.com/xxx/xxx访问页面,js触发aja

    2023年04月26日
    浏览(40)
  • java post请求怎么自定义header

     看效果 代码如下 或者

    2024年02月03日
    浏览(40)
  • Python实现自定义请求头消息headers

    使用python爬虫爬取数据的时候,经常会遇到一些网站的反爬虫措施,一般就是针对于headers中的User-Agent,如果没有对headers进行设置,User-Agent会声明自己是python脚本,而如果网站有反爬虫的想法的话,必然会拒绝这样的连接。 而修改headers可以将自己的爬虫脚本伪装成浏览器的正

    2024年02月12日
    浏览(41)
  • Nginx proxy_set_header参数设置

    不设置 proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 $proxy_host 的值,参考Module ngx_http_proxy_module 1 2 3 4 5 6 7 8 # cat ngx_header.conf server {      listen 8090;      server_name _;      location / {          proxy_pass http: //172 .31.5.0:5000;      } } 结果

    2024年04月16日
    浏览(34)
  • python自定义websocket包headers请求头

    有一种反爬手段“检测headers请求头中字段的排序”,websocket方式发请求也不例外。 python实现websocket连接,可以使用py包websocket-client 安装 使用  请求测试默认会添加请求头  如何修改并固定排序规则,重写get_handshake_headers函数 测试 大功告成! 

    2024年02月12日
    浏览(35)
  • 断点续传-http中Header参数Range(分段请求基础)

    需要用到几个http头 range if-range content-range accept-range 断点续传的优缺点 好处:防止大文件下载过程出现网络异常,而前功尽弃。 缺点:要发起多次请求,资源占用大,相对复杂 告知服务端,客户端下载该文件想要从指定的位置开始下载,至于 Range 字段属性值的格式有以下几

    2024年04月27日
    浏览(48)
  • okhttp post请求 header post参数加密遇到的两个问题

    如果你对于网络请求用了https后是否还有必要对参数加密有疑问可以看我上篇的文章:网络安全https 记得耐心看完,下面说问题: Caused by: java.lang.IllegalArgumentException: Unexpected char 0x0a 一开始以为是okhttp框架对特殊字符做了现在,网上其他文章说的是对中文字符,我想我这也没

    2024年02月06日
    浏览(51)
  • python爬虫-获取headers(报文头)关键参数实例小记

    第一步:请求页面,得到响应。 建议首次请求时headers内容都带着,调试的时候根据情况将headers中的参数进行注释,来确定是否为headers的参数或者formdata 参数影响 响应结果。 响应结果: 5分钟后相同参数再次请求 通过排查headers中的 X-Apikey 参数为关键参数。 第二步:全网站

    2024年02月16日
    浏览(31)
  • 如何给img标签里的请求添加自定义header

              是这样的需求,有一个web页面,里面图片的上传和预览来自于一个独立的文件服务器,对http的请求需要进行访问权限的设置,就是在请求的header里加一个Authorization的字段。上传好说我用的Axios直接添加一个header就行了,但是预览就比较麻烦了,因为 img 这个标签

    2024年02月04日
    浏览(41)
  • golang发送get请求的各种操作:自定义header请求头、带cookie请求、channel并发请求

    请求参数放到url.Values{} 接收文件–ioutil.WriteFile 接收文件–io.Copy

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包