`
bloodwolf_china
  • 浏览: 131411 次
社区版块
存档分类
最新评论

nginx处理HTTP header问题

阅读更多
  由于80端口需要root用户才能使用,所以tomcat都是root用户管理的,为了安全起见昨天安装了一个nginx作为反向代理,tomcat改为8080端口。但测试发现有几个接口一直报错,几个HTTP头取不到值,比对其他请求发现是包含了下划线。在百度和stackoverflow上查找问题发现,要求配置一下nginx,支持HTTP Header name支持下划线:

引用

underscores_in_headers on | off;

Default:off
Context:http, server

Enables or disables the use of underscores in client request header fields. When the use of underscores is disabled, request header fields whose names contain underscores are marked as invalid and become subject to the ignore_invalid_headers directive.
level, its value is only used if a server is a default one. The value specified also applies to all virtual servers listening on the same address and port.


但是nginx为什么要加这个配置呢,查找资料有的说HTTP Header name不能包含下划线。
翻了翻HTTP RFC,好像没有这个要求。
3.2 Header Fields
引用
Each header field consists of a case-insensitive field name followed by a colon (":"), optional leading whitespace, the field value, and optional trailing whitespace.

  header-field   = field-name ":" OWS field-value OWS   
  field-name     = token


token的范思科表达式定义:
token          = 1*tchar   
tchar          = "!" / "#" / "$" / "%" / "&" / "'" / "*"                  / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"                   / DIGIT / ALPHA                  ; any VCHAR, except delimiters
Delimiters are chosen from the set of US-ASCII visual characters not allowed in a token (DQUOTE and "(),/:;<=>?@[\]{}").


如果没理解错的话,HTTP header name应该可以包含下划线的。
还是下划线在nginx里有特殊用途,好像有的说是cgi会用到。
分享到:
评论

相关推荐

    教你怎么用Nginx往request的header中添加新字段

    在IT行业中,Nginx作为一款高性能的HTTP和反向代理服务器,被广泛应用于网站的负载均衡、静态资源处理及API服务的管理等场景。在实际应用中,有时我们需要对HTTP请求进行一些自定义处理,比如向request的header中...

    nginx-1.19.6_nginx-http-flv-module(64位)

    这个模块使得Nginx能够处理和分发流媒体内容,特别是对于在线视频直播服务非常有用。由于其基于HTTP协议,用户无需额外的插件或特殊客户端,只需要支持HLS的浏览器即可观看直播内容。 **Windows上的编译与安装** ...

    nginx配置教程之add_header的坑详解

    它的处理阶段比 location 处理晚,虽然可以写在 location 中,但如果 rewrite 别的 location,那么上一个 location 中尚未处理的 add_header 就会丢失。比如: location = /a { add_header a

    nginx安装, 解决跨域问题

    Nginx作为一个高性能的反向代理服务器,常被用于处理此类问题。本篇将详细介绍如何在Linux环境下安装Nginx,并通过修改配置文件来解决跨域限制。 ### Nginx安装步骤 1. **更新系统包** 在安装Nginx之前,确保系统...

    nginx作为http图片服务器示例

    【Nginx作为HTTP图片服务器】是一个常见的应用场景,利用Nginx的强大性能和高效处理静态资源的能力,可以构建一个稳定且快速的图片服务。Nginx是一款轻量级的Web服务器,以其高效的并发处理能力、低内存占用以及简单...

    nginx系列(十四)nginx下支持http/2.0

    对于那些想要深入了解Nginx源码和工具的用户,可以阅读Nginx的源代码,理解其内部如何处理HTTP/2.0的分帧和多路复用,或者利用Nginx提供的模块和工具进行扩展和调试。 通过这些知识,你将能够有效地在Nginx环境下...

    Nginx 配置文件 nginx.conf 详解

    客户端请求头部缓冲区大小是 Nginx 服务器处理客户端请求的重要组件,我们可以通过 `client_header_buffer_size` 指令来设置客户端请求头部缓冲区大小,例如 `client_header_buffer_size 4k;`,这将设置客户端请求...

    nginx-1.10.2_海康;javascript_nginx/1.10.2_nginx转发海康_

    综上所述,这个主题涵盖了Nginx的反向代理配置,JavaScript在实时视频流中的应用,以及与特定版本Nginx(1.10.2)的兼容性问题。在实际部署时,需要根据网络环境、硬件资源和安全需求进一步调整配置。

    headers-more-nginx-module-0.34

    而headers_more_nginx_module作为Nginx的一个扩展模块,进一步提升了其在处理HTTP头部信息时的灵活性和功能性。本文将详细探讨这个0.34版本的headers_more_nginx_module,带你深入了解它如何助力优化和管理HTTP响应...

    nginx上传下载之nginx-upload-module-2.3.0

    Nginx Upload Module 是一个用于 Nginx 的第三方模块,它允许用户在通过 HTTP 协议上传大文件时进行处理,例如分块上传、限速、断点续传等。这个模块对于构建支持大文件上传的 Web 应用非常有用,特别适用于文件分享...

    详解nginx请求头数据读取流程

    4. 头部处理:在解析请求头时,Nginx会查找匹配的内部处理函数,这些函数定义在`ngx_http_header_t`结构体数组中。例如,对于"Host"头,Nginx会调用相应的处理函数来处理主机名信息。 5. 遍历循环:`ngx_...

    Nginx转发WebSocket接口配置方式

    这些设置会影响Nginx如何存储来自后端服务器的数据,防止因缓冲区不足导致的问题。 5. **错误处理**:为避免WebSocket连接中的异常情况,如后端服务器下线,可以添加错误页面或者重试机制。例如: ```nginx ...

    nginx替代方案,nginx代替apache与jboss

    在实际生产环境中,Nginx 可以轻松处理 2~3 万个并发连接。 - **低内存消耗**:在 3 万个并发连接下,10 个 Nginx 进程仅消耗约 150MB 内存(每个进程平均消耗 15MB)。 - **简单的配置文件**:Nginx 的配置文件简洁...

    nginx系列(八)nginx失效转移与超时处理

    在本篇“nginx系列(八)nginx失效转移与超时处理”中,我们将深入探讨如何在Nginx服务器上配置失效转移和处理超时问题,这对于保障网站的高可用性和用户体验至关重要。Nginx作为一款高性能的反向代理服务器,其强大的...

    php获取不到自定义header参数原因详解

    总之,理解PHP处理HTTP头的方式以及`$_SERVER`数组的工作原理,是解决PHP获取自定义Header问题的关键。在实践中,开发者应遵循这些规则,以确保自定义Header能够正确地设置和获取,从而实现期望的功能。

    nginx于resin集成(nginx安装)

    Nginx以其高性能、低内存占用和反向代理能力而闻名,而Resin则是一款基于Java的Servlet容器,适用于处理Java Web应用程序。将Nginx与Resin集成可以充分利用两者的优点,实现高效的前端静态资源处理和后端动态内容的...

    nginx解决前后分离开发跨域问题

    在处理跨域问题时,我们可以通过修改Nginx的配置文件来实现反向代理。 首先,你需要解压提供的`nginx-1.13.9`压缩包,这包含了Nginx的源码和配置文件。安装Nginx之前,确保你的系统满足其依赖条件,然后按照官方...

    Windows下Nginx的安装与配置

    其中,error_log用于记录nginx的错误日志,worker_processes用于设置nginx的工作进程数,events用于设置nginx的事件处理,http用于设置nginx的HTTP服务器配置。 在http部分,我们可以看到,include mime.types用于...

    nginx配置fidller代理

    但为了确保安全,我们还需要处理SSL代理问题。Fiddler支持解密HTTPS流量,需要在客户端(如浏览器)上设置Fiddler的根证书。这通常涉及下载Fiddler的根证书,然后手动导入到客户端的信任证书存储中。 至于提供的...

Global site tag (gtag.js) - Google Analytics