1 背景
恰巧遇到上传文件时,后端服务器生成servlet http请求,提供给web端,使其能直接从浏览器通过http请求将流发送到后端服务器,不需进过web服务端,而web端的请求都为https,涉及https转http请求问题【问题描述还有一点】
2 技术选型
问题简而言之就是需要将后端的http请求变成https请求,这里有两种路子去处理:
1) 本身后端反馈给前端的是http的servlet,是否可以将servlet生成https的请求;
2) 能否通过其他代理手段,将后端http请求转换一下。
因时间紧,优先考虑代理方案。常用的代理服务手段nginx等,优先选择nginx,轻量与简单。
3 nginx代理
目标如下:
【客户端 --(https)-->nginx--(http)-->servlet容器】
选择nginx-1.20.0版本
代理https需要配置SSL,以如下命令生成SSL配置,加入到nginx配置中
1)生成密钥,使用openssl生成密钥private.key,长度为1024
openssl genrsa -out private.key 1024
2)使用密钥生成证书server.pem
openssl req -new -x509 -key private.key -out server.pem -days 365
证书信息可以随便填或者留空,只有Common Name要根据你的域名填写,即填写nginx所在服务器的IP或域名。
启动nginx即可