8月份要把处事迁移到青云上,认真搭建 HTTPS 处事的Daniel苦恼两天有余,设置 HTTPS 时一直陈诉下述问题:
400 Bad Request
The plain HTTP request was sent to HTTPS port
这个问题是我们实验在云处事上搭建 HTTPS 时呈现的,要清楚复述这个问题有点巨大,列位直接移步看 stackoverflow 上的 Dealing with nginx 400 “The plain HTTP request was sent to HTTPS port” error 这个例子吧,相信你会有许多收获。
以下这段会辅佐你领略其实质:
The error says it all actually. Your configuration tells Nginx
to listen on port 80 (HTTP) and use SSL. When you point your
browser to http://localhost, it tries to connect via HTTP. Since
Nginx expects SSL, it complains with the error.
HTTPS: HTTP over TLS, HTTP over SSL, and HTTP Secure.
简朴地说,HTTPS 就是在一条由 SSL/TLS 加密的毗连(connection)上传输HTTP数据,目标是防备HTTP内容被偷听和改动。
换言之,HTTPS在一个不安详的网络上建设了一个安详通道。
HTTP数据有一个加密息争密的进程。领略了这一点你就领略了在云上设置的两种方案。
无他,就是为了防备内容被改动。
必然要熟悉nginx的设置,不然,你会处处乱搜办理要领,不是猜疑这儿配错了,就是猜疑那儿配错了。
有两个方案可以实现HTTPS处事。方案一就是由负载平衡器(LB = Load Balancer)来实现,方案二由后端WebServer来实现。
方案一:LB实现
请凭据青云的 搭建 HTTPS 协议的负载平衡器指南 的要求举办 HTTPS 协议搭建。因为我们利用路由器,环境有些许差异,要点:
LB设置HTTPS
将你的处事器证书的“证书内容” 和 “私钥”配好,监听HTTPS协议,443端口。
路由器设置
在路由器大将443映射到后端的80端口(HTTP)。
后端nginx设置
这里只需要设置HTTP处事即可,因为解密数据的任务由LB包袱了,这里自然不需要设置HTTPS了。
注:Daniel就是折在这里了,,他在路由器里将443映射到后端的443 ssl,路由器过来的数据已经解密了,已经是plain HTTP request,还要发送到HTTPS port(443)上,虽然就会 complain with the error了。
青云HTTPS处事的两种设置方案
方案二:后端WebServer实现
LB设置TCP
监听TCP协议,443端口。
路由器设置
在路由器大将443映射到后端的443端口(HTTPS)。
后端nginx设置
凭据尺度的HTTPS处事举办设置。如下:
server {
listen 80;
listen 443 ssl;
server_name c.example.com;
ssl_certificate /usr/local/nginx/conf/app/example/example.crt;
ssl_certificate_key /usr/local/nginx/conf/app/example/example.key;
root /home/app/c.example.com/;
location ~ \\.(htm|html)$ {
add_header Cache-Control no-store;
expires -1;
}
location / {
index index.html;
}
access_log /home/logs/c.example.com/access.log access;
error_log /home/logs/c.example.com/error.log info;
}
相对付“原始的nginx设置”的改造:
80和443在一个 server 内里即可(保持简朴性、一致性)。
index里的index.php删除,因为网站基础不提供php处事。(不应有的对象一点都不要有,保持简朴、简捷)
顺序调解(加强可领略性)。
附:原始的nginx设置
原始的nginx设置
请记着尽大概利用谷歌搜索处事。
优先查阅以下网站:
我们利用https的初心是防备HTTP内容被改动,因为做正常CPS业务的导航网站常碰着被混混推广者强行改动内容从而挟制流量举办跳转的环境。
跳转地点:http://c.example.com => https://c.example.com。
协议切换
zz
js 认真跳转,js 文件中雷同语句https://c.example.com/shopid.html?uid=,个中https即指明利用https协议。
js文件位于www网站/$version/toolbar/js/toolbar.js。当前3.7和3.9版本在正常维护。
sm
由软件提供跳转,需要修改设置文件 unionmap.xml,软件重启后会下载该设置文件的 zip 包(2015-09-07)。
该设置文件在 http://click.example.com/admin 靠山的商城打点下生成,当下仅点击生成新的商城同盟映射表即可,其他无需操纵。