nginx 代理https后,spring mvc web应用redirect https变成http

Posted Mr_Smile2014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 代理https后,spring mvc web应用redirect https变成http相关的知识,希望对你有一定的参考价值。

前几天用nginx 代理https后,应用redirect https变成http,导致网站无法访问的问题,在网上找了半天,终于找到了解决方法了。

虽然自己解决了,我相信还有其他朋友遇到过这个问题,所以转载分享一下:


原因分析:

浏览器到nginx是https,nginx到应用服务器变成http,

应用服务器,再做302 redirect的时候,返回的redirect 地址就好变成http的地址;

原因是spring mvc的servlet的secheme取值,request.getScheme()

是取请求里的一个scheme值,所有这个值在nginx代理时要设置成https

其中: request.getScheme() return http but not https.

解决方法:

改成这样

server {
    listen 80 default_server;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect http:// $scheme://;
    }
}


以上是关于nginx 代理https后,spring mvc web应用redirect https变成http的主要内容,如果未能解决你的问题,请参考以下文章

nginx代理添加servlet路径

使用 nginx 作为代理的 Spring Boot 应用程序部署在 Heroku 上

nexus 绑定负载均衡nginx反向代理后 遇到的https问题。

nginx反向代理Harbor/配置https

ngxin常用配置--nginx之proxy_pass代理后端https请求完全解析

Nginx正向代理配置