`
cd0281
  • 浏览: 123020 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

nginx做转发时,带'_'的header内容丢失(转发)

 
阅读更多
转发:https://blog.csdn.net/Nazir2513/article/details/70889319

原本在测试环境测试通过的APP,今天准备切到线上环境做最后测试,结果发现了错误。查看日志发现是APP端发送的http请求中的header内容丢失了。那么代码没有改动,怎么平白无故会丢失头信息?
于是想到两个环境的不同之处在于线上是通过nginx做的代理转发,会不会是nginx搞的鬼?于是搜索“nginx request header 丢失”,果不其然是这个问题,nginx对下划线的头信息做了限制,找到问题所在就等于完成了一大半,办法总比困难多。遂决定记录之。
- 方法一:不用下划线
既然nginx对下划线不支持,那没关系,不用下划线就是了。比如原来”app_version”改成”app-version”就可以了。(难怪一般header的name都是’-‘来拼接的,比如”User-Agent”)
- 方法二:从根本接触nginx的限制
nginx默认request的header的那么中包含’_’时,会自动忽略掉。
解决方法是:在nginx里的nginx.conf配置文件中的http部分中添加如下配置:
underscores_in_headers on; (默认 underscores_in_headers 为off)
分享到:
评论

相关推荐

    Nginx代理时header头中带”_”信息丢失问题的解决

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

    Suse Linux 同机部署两个Ngnix负载均衡服务

    proxy_set_header X-NginX-Proxy true; proxy_set_header Connection ""; proxy_http_version 1.1; } # 监控页面 location /NginxStatus { stub_status on; } # 错误页面 error_page 500 502 503 504 ...

    Nginx session丢失问题处理解决方法

    例如,通过`proxy_cookie_path`指令可以指定在Nginx转发请求时保留Cookie的路径。如下所示: ```nginx proxy_cookie_path /jhyx/ /; ``` 4. proxy_set_header指令:Nginx通过`proxy_set_header`指令可以设置转发给...

    nginx集群配置-测试通过

    Nginx通过`proxy_pass`指令可以将session信息转发给后端服务器,但默认情况下,session信息会存储在本地,这意味着如果用户在集群中的不同服务器之间切换,session可能会丢失。为了解决这个问题,我们可以使用...

    nginx+tomcat+memcached实现session共享

    这有助于提高系统的可扩展性和容错性,因为用户在切换服务器时无需重新登录或丢失状态信息。本主题将详细讲解如何利用Nginx、Tomcat和Memcached来实现这种会话共享。 首先,Nginx是一个高性能的反向代理服务器,...

    nginx升级过程文档.docx

    在升级前,首先需要安全地关闭正在运行的Nginx服务,以避免数据丢失或冲突。这可以通过执行`pkill nginx`来实现,该命令会终止所有与nginx相关的进程。 2. **上传并解压新版本的Nginx** 获取最新版本的Nginx源码...

    Nginx + Tomcat +session共享.docx

    在现代互联网架构中,Nginx 和 Tomcat 经常被一起使用,Nginx 作为前端反向代理服务器负责负载均衡,而 Tomcat 则作为后端应用服务器处理 Java 应用程序。在这样的配置中,确保用户会话(Session)在多个 Tomcat ...

    Nginx服务器中配置非80端口的端口转发方法详解

    nginx可以很方便的配置成反向代理服务器:  server {  listen 80;  server_name localhost;  location / {  proxy_pass http://x.x.x.x:9500;  proxy_set_header Host $host:80;  proxy_set_header X-Real-...

    nginx+tomcat集群的jar包 session共享

    `nginx` 通常作为反向代理和负载均衡器,而 `tomcat` 则作为Java应用服务器处理动态内容。然而,在这种配置中,`session` 共享成为一个关键问题,因为用户在与集群中的不同 `tomcat` 实例交互时,需要保持会话状态的...

    Nginx+tomcat 实现负载均衡session共享demo

    `session`在Web应用中用于存储用户状态信息,如果在`Nginx`负载均衡下不共享,会导致用户在切换服务器时丢失`session`数据。有几种常见的解决方案: 1. **Cookie-Based**:将`session ID`存储在cookie中,每次请求...

    详解proxy_pass根据path路径转发时的”/”问题记录

    在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/。当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。...

    一个nginx和tomcat负载的例子,附上实现(已测试)

    在配置Nginx时,我们可以使用`upstream`模块定义一组服务器,并使用负载均衡算法(如轮询、最少连接、IP哈希等)来决定将请求发送到哪台服务器。 例如,一个基本的Nginx配置可能如下: ```nginx http { upstream ...

    项目部署文档nginx

    - 在Nginx配置文件中设置反向代理规则,将客户端请求转发到后端应用服务上。配置示例如下: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; # ...

    nginx+tomcat+redis完成session共享

    在session共享场景中,Nginx可以配置为将带有特定session ID的请求路由到具有该session数据的服务器。 2. **Tomcat**:Tomcat是一个广泛使用的Java Servlet容器,用于运行基于Java的Web应用程序。在多台Tomcat...

    Nginx+Tomcat+Redis实现负载均衡过程中session所需架包

    在负载均衡场景下,每个Tomcat实例都需要独立处理用户的session,但由于session数据存储在服务器本地,当用户请求被转发到其他服务器时,会导致session丢失。为了解决这个问题,我们可以引入Redis来存储session。 ...

    利用nginx解决cookie跨域访问的方法

    Nginx在处理来自客户端的请求时,可以配置为接受来自所有IP地址的请求,并将其转发到相应的后端服务器。在此过程中,Nginx可以设置特定的响应头来实现cookie共享。具体实现手段包括但不限于: 1. 设置Cookie的...

    Nginx tomcat mybatis 集群部署

    由于每个Tomcat实例都独立存储Session数据,当用户在不同节点间切换时可能会遇到Session丢失的问题。为了解决这个问题,可以采用以下几种方案实现Session共享: - **Memcached**:通过使用Memcached等缓存工具实现...

    NGINX + TOMCAT 6 + REDIS 实现负载均衡 session会话同步

    在负载均衡环境中,每个TOMCAT实例都是一个后端服务器,接收由NGINX转发的请求。然而,当用户在多台服务器间切换时,session会话信息可能会丢失,因为它们默认存储在每个服务器的内存中。为了解决这个问题,我们需要...

    tomcat+nginx+redis 实现sessionId共享 实例

    3. **配置Nginx**:在Nginx的配置文件中,设置反向代理规则,确保所有来自客户端的请求都被正确地转发到后端的Tomcat服务器。同时,开启`proxy_set_header`,传递`Cookie`和`Set-Cookie`头,以便保持会话。 4. **...

Global site tag (gtag.js) - Google Analytics