IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx反向代理,header参数带下换线(_)导致接口调用不通,丢失header丢失的问题 -> 正文阅读

[系统运维]Nginx反向代理,header参数带下换线(_)导致接口调用不通,丢失header丢失的问题

请求接口Header参数带下划线,Nginx反向代理后参数丢失

发生业务场景

   因为公司项目对接外部公司的流程接口,这块工作由我的另外一位同事来完成,
   在本地开发环境进行测试能够正常进行访问,但是发布的UAT环境后发现发现开发实现的功能不能正常使用,
   请求即可虽然是200状态码,但是返回的数据不对。开始一直怀疑是部署环境有问题,
   询问其他同事也没有好的解决办法,结果到下午后他与另外一位同事交流说是不是请求头丢失导致的。
   结果“**==一语惊醒梦中人==**”。

发送问题的本质原因

  1. 最后追踪到问题的本质原因是因为第三方公司在头部请求参数比较特殊,参数里面带了下换线(==_==)

  2. 为了统一调用转发在Nginx里面进行了相关的配置,默认Nginx Header参数下换线被忽略
    默认情况下,并不是所有headers的fields它都会转发,fields里带有下划线(_)的,Nginx视为不合法,自动抛弃不发了。例如:AUTHORIZATION_TOKEN

解决办法

1.不使用下划线
目前别人这个功能已经上线在使用之中,让对方修改不太现实。
2.此接口在后端写一个转发方式,不走Nginx直接调用应该可行
3.修改Nginx的相关配置是的支持头部下换线参数
想要支持下划线()的headers fields,就需要将underscores_in_headers设置为on;默认是offNGINX配置添加红框部分,并重启Nginx
4、尝试办法在Nginx代理之之中加上头部请求信息(不起作用)
方法一:NGINX代理时加上请求头信息:
location /
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://域名/api/v1/abc;
}
由于前端代码request的header中包含==
==,所以这个配置没有生效

试验可行方案

在这里插入图片描述

// 配置Nginx信息
http {
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';

  access_log  /var/log/nginx/access.log  main;

  sendfile            on;
  underscores_in_headers on;#解决代理时请求头丢失问题
  tcp_nopush          on;
  tcp_nodelay         on;
  keepalive_timeout   65;
  types_hash_max_size 2048;

总结

     解决问题的时候,需要细心发现问题本质原因,需要观察问题发送的细节原因,另外需要适当的时候与其他同事交流,也许当前发送的问题其他同事可能遇见过。一句话话就容易减少走很多弯路。有相应的解决方案后多实践试验。
     另外在实际开发之中 **==尽量不要使用下划线参数作为header参数==**

参考文章

NGINX反向代理,header丢失的问题

nginx反向代理导致请求header头信息丢失

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:48:04  更:2022-09-04 01:51:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:29:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码