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 靠山的商城打點下生成,當下僅點擊生成新的商城同盟映射表即可,其他無需操縱。