今天遇到一个问题,公司内部系统需要对接交行app接口,内部系统请求地址基于http协议,交行app请求地址基于https协议,此时需要nginx作为中间代理服务器分发请求,并起到负载均衡的效果。为了打通连接,所以需要在nginx内部实现http和https的转换。
1. 首先先大概了解下http协议和https协议的差异:
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
简单来说就是:HTTPS比HTTP安全
想了解更多http和https的区别可以参考 HTTP与HTTPS的区别
2. 如果你已经看过读过上面的文章,那应该了解 基于HTTPS协议传输的数据为了保障数据传输过程中的安全性和不可篡改,需要有一个加密和解密的过程,而这里面又牵扯到证书密钥等一些方面的知识(好复杂啊(┬_┬))
如果想了解的更多的话:
证书方面的知识可以参考下这篇这篇文章 :证书相关的那些事
密钥,数字签证等方面的知识可以参考这篇文章:公钥,私钥和数字签名这样最好理解
3. 大概了解了上面的知识,接下来进行修改nginx.conf配置文件(此处为简单配置):
server{
listen 443;
ssl on;
ssl_certificate /etc/nginx/conf.d/ssl/cer_n.crt;#证书位置
ssl_certificate_key /etc/nginx/conf.d/ssl/cer_n.key;#公钥位置
server_name domain_n;#域名
location / {
//location配置略
}
}
service nginx restart
5.浏览器访问https地址。