java后台系统登陆重定向访问https跳转到http的解决方法
1、问题描述开发了一个web后台系统,nginx配置了证书,开启443端口,支持https请求;但是后台系统中使用了相对路径的重定向,导致登陆重定向报错;备注:nginx配置了证书,支持443,但是不支持80端口;后端只处理http请求;...
·
1、问题描述
开发了一个web后台系统,nginx配置了证书,开启443端口,支持https请求;但是后台系统中使用了相对路径的重定向,导致登陆重定向报错;
备注:nginx配置了证书,支持443,但是不支持80端口;后端只处理http请求;
2、配置项
nginx.conf
server {
# 监听8080端口
listen 8080;#不要占用 即将转发的80端口 。或者直接干掉这个server
location / {
}
}
https 转 http
server {
listen 443 ssl;
# 域名配置 https://xx.cn
server_name xxx.com;
ssl on;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
# 证书位置
ssl_certificate ssl/server.crt;#配我们生成的 nginx-1.14.0/https/xx.cn/server.pem;
ssl_certificate_key ssl/server.key;#配我们生成的 ngin1.14.0/https/xx.cn/privkey.pem;
location / {
proxy_pass http://xxx.com;#这里的xxx.com是我们需要转发的,配合修改hosts文件
//127.0.0.1 xxc.com
}
}
后端代码的写法:
/**
* 拦截处理
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {
// do something
//这里使用了相对路径
response.sendRedirect("/index/index");
return true;
}
3、解决办法
1、直接修改后端代码,重定向改为绝对路径;
2、nignx添加重定向设置,把后端重定向的回文改成http改成https交给浏览器重新请求
proxy_redirect http:// $scheme://;
参考:
更多推荐
已为社区贡献2条内容
所有评论(0)