什么情况下,导致客户端请求的https跳转为http,请求超时?

时间:2022-03-29    发布者:api代理【优亦云】    来源:HTTPS【优亦云】

分享到:

ngin配置ssl https代理后端tomcat http请求时,会自动跳回http并报错:400 Bad Request    The plain HTTP request was sent to HTTPS port

 解决方案:添加参数

 1)proxy_redirect参数;

这个参数主要用来改从被代理服务器传来的应答头中的"Location"和"Refresh"字段。

在此处配置为proxy_redirect http:// $scheme://;

作用是将从tomcat中返回的http修改为https。

2)port_in_redirect参数;

这个参数的作用是启用或禁用在由nginx发布的绝对重定向中指定端口。

 此处配置为port_in_redirect on;

作用是在nginx反向代理跳转到tomcat时将跳转到的端口替换为nginx监听的端口。

3)proxy_set_header 参数

 此处配置为 proxy_set_header Host $host:$server_port;

 此处设置为proxy_set_header  Host $host:$server_port;的作用是将请求的报文的头部的客户端的ip更改为当前作为反向代理的nginx的监听的ip及端口,这样后端的tomcat处理完请求时返回给nginx,再由nginx代理将结果返回给客户端。不然,后端服务处理完请求会直接返回到客户端,这样会导致客户端请求的https跳转为http,以及请求超时。