二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

    • 关于nginx请求头中有下划线_的坑
      • 1,前言。
      • 2,解决。
        • 2.1 不用下划线 。
        • 2.2 从根本上解除 nginx 的限制 。
    • 利用nginx+sftp实现一个可供用户下载的服务
    • nginx配置文件及模块
    • 通过脚本按天切割nginx的日志
    • nginx通过四层代理实现端口转发
    • NGINX基于cookie针对同一域名进行分流转发
    • nginx利用内置模块配置限速限流
    • 利用NGINX内置模块mirror进行流量复制等操作
    • 使用$remote_user字段记录访问NGINX的用户
    • 从NGINX自身配置文件中定义访问日志按时间切割
    • NGINX配置单独代理百度的sitemap文件
    • nginx配置微信小程序校验及其他
    • nginx配置gzip压缩
    • 由Nginx集中代理分散的PHP集群的实践
    • http状态码详解
    • OpenResty-1-13-6-2-新增ldap模块儿
    • 排查NGINX的open_file_cache导致发布后访问404的问题
    • 制作OpenResty-1-19-9-1的RPM包
    • 从Nginx过滤打印user-agent为clb-healthcheck的日志聊聊Nginx的日志自定义打印
  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • Nginx
二丫讲梵
2018-06-08
目录

关于nginx请求头中有下划线_的坑

文章发布较早,内容可能过时,阅读注意甄别。

# 1,前言。

风平浪静的下午,一个前端开发同事找到我,说感觉好像 nginx 那边有一些转发并没有到达后端。

我问,怎么了?

她说的也非常具体,第一是常规访问服务,然后返回的状态是 401,提示令牌失效(Token Invalid )。接着直接访问后端所代理的服务,然后就是正常的。

哦,听上去很明显啦,事儿就是到 nginx 这里卡住了呗。我问她详细的情况是怎样的?

她说获取验证码以及登陆都是没有问题的,但是就是这里的 token 没有传过去,token 是放在请求头里边的,这个头的名称是“old_token”。

听上去一切好像都没什么问题,而这个问题也确实是我第一次遇到的,后来求助百度,在某篇文章里找到了答案,这里粘贴过来,以存记录。

image

申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

Copyright 二丫讲梵 (opens new window) 版权所有

# 2,解决。

原本在测试环境测试通过的 APP,今天准备切到线上环境做最后测试,结果发现了错误。查看日志发现是 APP 端发送的 http 请求中的 header 内容丢失了。那么代码没有改动,怎么平白无故会丢失头信息?

于是想到两个环境的不同之处在于线上是通过 nginx 做的代理转发,会不会是 nginx 搞的鬼?于是搜索“nginx request header 丢失”,果不其然是这个问题,nginx 对下划线的头信息做了限制,找到问题所在就等于完成了一大半,办法总比困难多。遂决定记录之。

# 2.1 不用下划线 。

既然 nginx 对下划线不支持,那没关系,不用下划线就是了。比如原来old_token改成old-token就可以了。(难怪一般 header 的 name 都是-来拼接的,比如User-Agent) 。

# 2.2 从根本上解除 nginx 的限制 。

nginx 默认 request 的 header 的那么中包含_时,会自动忽略掉。

解决方法是:在 nginx 里的 nginx.conf 配置文件中的 http 部分中添加如下配置:

underscores_in_headers on;
1

默认 underscores_in_headers 为off。

我们采取了第一种方法,她更改了一下请求头的名称,果然这个问题就解决了。

参考链接:https://blog.csdn.net/Nazir2513/article/details/70889319

微信 支付宝
#nginx#迎刃而解
上次更新: 2024/07/04, 22:40:37
一次因为Mac系统升级引发的ssh无法免密登陆的问题
利用nginx+sftp实现一个可供用户下载的服务

← 一次因为Mac系统升级引发的ssh无法免密登陆的问题 利用nginx+sftp实现一个可供用户下载的服务→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式