首页 > 系统相关 >nginx遇到的坑

nginx遇到的坑

时间:2023-11-21 15:13:05浏览次数:38  
标签:遇到 header Host RFC nginx host 400

1) 自定义请求头获取不到

请求头request_token中包含'_'字符,会nginx过滤掉。默认情况下,underscores_in_headers为off,表示当客户端请求头中带有下划线的字段默认将会被标识为无效字段。

解决方案

添加如下配置:

http {

underscores_in_headers on;

}

2)nginx没有透传host请求头,tomcat 400

nginx

默认情况下nginx反向代理是不会转发请求中的Host头部,nginx在没有配置proxy_set_header HOST $host 的时候,在转发http请求的时候会默认把upstream的名称作为Host头部的内容。如果upstream的名称的是非法,就会导致tomcat响应400。例如名称中出现 _ 就是不规范的。
tomcat 更新日志:

Enable strict validation of the provided host name and port for all connectors. Requests with invalid host names and/or ports will be rejected with a 400 response. (markt)
Implement the requirements of RFC 7230 (and RFC 2616) that HTTP/1.1 requests must include a Host header and any request that does not must be rejected with a 400 response. (markt)
Implement the requirements of RFC 7230 that any HTTP/1.1 request that specifies a host in the request line, must specify the same host in the Host header and that any such request that does not, must be rejected with a 400 response. This check is optional and disabled by default. It may be enabled with the allowHostHeaderMismatch attribute of the Connector. (markt)
Implement the requirements of RFC 7230 that any HTTP/1.1 request that contains multiple Host headers is rejected with a 400 response. (markt)
Implement configuration options to work-around specification non-compliant user agents (including all the major browsers) that do not correctly %nn encode URI paths and query strings as required by RFC 7230 and RFC 3986. (markt)
解决方案

location /test {
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

标签:遇到,header,Host,RFC,nginx,host,400
From: https://www.cnblogs.com/vzhangxk/p/17846608.html

相关文章

  • Python下使用requests库遇到的问题及解决方案
    每一盏灯都有一个故事……当凌晨2点我的房间灯还亮着时,那就是我与BUG的一场生死博弈。一个人静静地坐在电脑前不断地写代码,感觉快要麻木了,好比闭关修炼一样枯燥无味。最终当我打通任督二脉后,bug修复迎来的一片曙光。一、问题背景在最近的项目中,我使用Python3.6和DigestAuth进行身......
  • nginx+keepalived+http高可用和负载均衡:(实验)
    1.先NGINX负载均衡(2台)一模一样,客户端设置域名解析,负载均衡器的名称www.web.com YJ.li容器 数据库 自动化 网站架构 管理Nginx-keepalived+Nginx实现高可用集群 Keepalived+Nginx高可用集群(主从模式)#集群架构图:说明:Keepalived机器同样是nginx......
  • 开发中遇到的问题总结---java中list和Collection之间的转换
    问题描述:将map中的values转换为list错误做法:强制转换(会报错)List<String>originalContractCodeList=(List<String)kpmcKpidMap.values();正确做法:List<String>originalContractCodeList=newArrayList<>(kpmcKpidMap.values());......
  • Nginx+keepalived实现nginx高可用
    1,keepalived工作原理nginx的安装已有现成文档,就不重新编写文档了本文讲述主、从服务器各一台2,主、从服务器上安装keepalived1.使用yum安装keepalivedyum-yinstallkeepalived2.查看keepalived是否安装成功,出现版本即成功rpm-q-akeepalived3,主、从服务器上修改kee......
  • 编译nginx使用systemctl 开启关闭脚本
    [Unit]Description=nginx-highperformancewebserverDocumentation=http://nginx.org/en/docs/After=network-online.targetremote-fs.targetnss-lookup.targetWants=network-online.target[Service]Type=forkingPIDFile=/apps/nginx/logs/nginx.pidExecStart......
  • centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在
    前言FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线......
  • Nginx实现基于请求头的访问控制配置
    在Nginx中,可以使用"allow"和"deny"指令来实现IP访问限制。"allow"指令用于允许特定的IP地址或IP地址段访问服务器,"deny"指令用于阻止特定的IP地址或IP地址段访问服务器。以下是一个简单的配置示例:复制12345location/{    deny192.168.0.1;    allow19......
  • Nginx实现基于IP地址的访问控制配置
    一、Nginx配置中的IP地址变量在Nginx的配置文件中,通过一些变量来表示客户端的IP地址。其中最常用的是$remote_addr变量,它代表了客户端的IP地址。二、简单的IP地址过滤配置允许特定IP地址访问复制1234location/{  allow192.168.1.100;  denyall;}......
  • Nginx实现基于请求URL的请求重写配置
    在Nginx中,可以使用rewrite指令来进行请求重写。其基本语法如下:复制1rewriteregexreplacement[flag];其中,regex表示正则表达式,用于匹配当前请求URL;replacement表示目标URL,替换原来的URL;flag是可选的标志位,用于控制重写的行为。例如,下面的重写规则可以将以“/pa......
  • 命令行方式启动nginx
    果nginx在d:/software/nginx目录下,那么命令行启动方式是:1、进入d:/software/nginx目录下复制1cdd:/software/nginx2、启动nginx复制1startnginx3、如果需要关闭nginx,则执行如下命令:复制1nginx-sstop......