nginx转发headers内容丢失解决办法

这篇具有很好参考价值的文章主要介绍了nginx转发headers内容丢失解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

开发网关项目时,在请求时往请求头header中放入了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理之后发现拿不到。

原因:

nginx代理默认会把header中参数的 "_" 下划线去掉,所以后台服务器后就获取不到带"_"线的参数名。需要在http配置里添加这个参数配置为on。

underscores_in_headers on; #该属性默认为off,表示如果header name中包含下划线,则忽略掉。

扩展:

另外,如果只需要保留请求头中的某些特定下划线参数,可以在Nginx配置文件中添加以下语句:

ignore_invalid_headers off;

 然后在server或location段中,使用proxy_set_header指令来设置需要保留的请求头参数。例如:

location / {
    proxy_pass http://backend;
    proxy_set_header X-MyHeader $http_x_my_header;
}

以上示例中,Nginx会保留名为 "X-MyHeader" 的请求头参数,并将它的值设置为原请求头中名为 "x-my-header" 的参数的值。 

完整代码配置:

http {
    # 全局配置
    underscores_in_headers on;

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            # 保留名为 X-MyHeader 的请求头参数
            proxy_set_header X-MyHeader $http_x_my_header;
        }
    }
}

以上示例中,underscores_in_headers 指令被配置在 http 块中,保证了全局的下划线参数保留。而 proxy_set_header 指令则被配置在 location 块中,保留了名为 X-MyHeader 的请求头参数。文章来源地址https://www.toymoban.com/news/detail-511745.html

到了这里,关于nginx转发headers内容丢失解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【taro react】---- 解决 iOS 真机微信小程序 Input 密码框 type 切换会导致 Input 内容丢失问题

    1. 问题场景 在密码登陆时,有显示和隐藏密码的功能,实现方式很简单,直接对输入 input 的 type 进行 password 和 text 值进行切换,就可以实现密码的显示和隐藏。 2. 实现代码 通过修改 input 的 type 值实现密码的显示和隐藏。 密码的显示和隐藏控制图标也是通过 type 值进行判断

    2024年02月03日
    浏览(31)
  • 浏览器同源策略导致跨域问题 No ‘Access-Control-Allow-Origin‘ header 原因及解决方式--(后端、nginx、前端)

    目录 现象 原因 浏览器同源策略 导致结果: 解决方案 跨源资源共享(CORS) 各个端解决方法: 后端: 方式1:重载WebMvcConfigurer方法 方式2:配置监听CorsFilter 方式3:相关类上加注解 @CrossOrigin 注意事项: Nginx解决: 情况1: 前端解决: 本人身份:后端 今天部署线上环境前端

    2024年01月23日
    浏览(54)
  • nginx的权限问题(13: Permission denied)解决办法

    1、查看 nginx 启动用户和使用用户是否一致 如图:  一个是www,一个是root用户 2、打开 nginx 配置文件 打开  nginx.conf 文件 查找nginx.conf的位置  3、把  nginx 改为 root 4、重启nginx服务 再使用查看命令 如图: 访问接口,正常请求  

    2024年02月10日
    浏览(89)
  • 微信小程序安卓系统下Input输入内容上移错位问题的解决办法

    需要设置一个状态控制scroll-view是否允许滑动,当Input获取焦点是,将滑动禁止,当Input失去焦点时,允许滑动

    2024年01月20日
    浏览(66)
  • Nginx SSL_PROTOCOL_ERROR 问题排查与解决办法

    在使用 Nginx 作为反向代理服务器时,有时候会遇到 SSL_PROTOCOL_ERROR 错误。这个错误表示 SSL/TLS 握手过程中出现了问题,导致连接无法建立或者无法正常通信。本文将介绍一些常见的排查步骤和解决办法来解决这个问题。 检查 SSL/TLS 配置 首先,我们需要检查 Nginx 的 SSL/TLS 配置

    2024年02月04日
    浏览(42)
  • MacBook的nginx出现13: Permission denied 的问题分析和解决办法

    同样的项目代码,电脑从Windows更换到了MacBook,发现网站的样式都没有了,直接访问CSS文件 http://crm.ms-test.cc/toolstatic/css/bootstrap.min.css 发现无法访问。查看Nginx错误日志: 说明是nginx没有权限访问这个CSS文件,查看了文件权限没问题,那么需要从nginx配置方面排查原因。 查看

    2024年02月21日
    浏览(66)
  • nginx: [emerg] bind() to 0.0.0.0:18888 failed (98: Unknown error)问题解决办法

    周末断网,今天来了之后,nginx出现这个问题,本站基本搜索的都是端口被占用问题,我试着杀掉所有占用端口的进程,解决办法 1.killall -9 nginx 2.然后启动(./nginx)nginx(PS:不要./nginx -s reload) 3.如果启动失败失败,重新指定配置文件的路径 ./nginx -c /home/portal/nginx/conf/nginx.con

    2024年02月08日
    浏览(52)
  • 比特彗星端口堵塞解决办法DMZ-端口转发-异常解决

    如果遇到比特彗星右下角显示黄灯,显示端口堵塞,可以在路由器中进行开启 端口转发 或者 DMZ (每个路由器说法有可能不一样) 如果只是一台设备进行端口转发,这样就可以完成了,或者使用简单的方法,开启路由器中的 DMZ 功能  DMZ功能可以将一个设备直接进行映射,比

    2024年02月04日
    浏览(41)
  • nginx 反向代理服务器端口转发问题

    先介绍一下项目背景,公司里有个外包Saas项目,这里假设为A项目( 前后端不分离 );项目架构大概如下;但是项目部署到生产环境时,那台服务器80端口被其他应用占用了(我尼玛...),nginx监听端口那边只能监听其他端口了,比如监听:18000,通过nginx反向代理将18000端口转发到

    2024年02月04日
    浏览(52)
  • kafka消息丢失面试题,RocketMQ消息丢失场景及解决办法

    互联网行业更新换代非常快,行业常态便是不断学习,因此这些主流技术你一个都不能落下! ①并发编程 Java并发编程是整个Java开发体系中最难以理解,但也是最重要的知识点之一,因此学习起来比较费劲,从而导致很多人望而却步,但是无论是职场面试还是高并发高流量的

    2024年03月17日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包