目錄html
年前團隊成員zjq在作智能設備箱運維繫統的微信小程序,主要實現智能設備箱列表展現,單臺監測展現,門禁開關控制等功能。作着作着,發現微信小程序的後臺接口,都須要https的安全連接,IP地址+端口號無效。對,騰訊爲了使得小程序的安全,使用了https規範。linux
這裏推薦購買騰訊雲服務器或者阿里雲服務器,由於他們的服務器會配備一個公網IP,比較地適合作微信後臺接口的地址。固然,若是你所裝的寬帶有購買了運營商的公網IP地址,只須要一臺電腦,或者服務器就可使用了。原理都同樣。雲服務器一個優勢就是切換安裝操做系統很是方便,並且能夠瞬間完成,好比windows server跟linux之間的切換。
本文采用騰訊云云服務商:
nginx
雲服務器配置:
小程序
這裏須要注意的是,能夠選擇活動期去購買,否則價格還挺貴的。windows
域名也能夠到阿里雲或者騰訊雲處購買,由於他們都帶有備案功能,並且碰上搞活動也不貴。
本文采用騰訊云云服務商:
後端
須要注意的是,這裏域名跟IP地址的購買必須保持一致,統一在阿里雲或者騰訊雲。由於備案第一步須要先通過雲服務商的審覈,而每一個不一樣的雲服務商的審覈規則都不相同。微信小程序
HTTPS還須要SSL證書,在以下路由能夠申請到免費的SSL證書。
api
商用SSL證書根據功能不一樣,收費不一樣。安全
備案經過以後的狀態顯示爲綠色的正常。服務器
在域名解析這一步咱們將經過配置雲服務商的DNS服務器完成IP地址跟域名的綁定。
找到nginx.conf配置文件,添加以下配置。
#http節點中能夠添加多個server節點 server{ #監聽443端口 listen 443 ssl; #對應的域名,改爲本身的域名就能夠了 server_name dataxxxx.tech; #從騰訊雲獲取到的第一個文件的全路徑 ssl_certificate cert/1_www.dataxxxx.tech_bundle.crt; #從騰訊雲獲取到的第二個文件的全路徑 ssl_certificate_key cert/2_www.dataxxxx.tech.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; #由於使用的是靜態的html網頁,因此直接使用location就能夠完成了。 location / { #文件夾 root html; #主頁文件 index index.html; } }
location /newApi/ { rewrite ^/newApi/(.*)$ /$1 break; #全部對後端的請求加一個api前綴方便區分,真正訪問的時候移除這個前綴 # proxy_pass http://localhost:9088; }
配置http域名,IP地址跳轉到https 443接口
server{ listen 80; server_name 148.xx.xxxx.142; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; } server{ listen 80; server_name www.dataxxxx.tech; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; }
#http節點中能夠添加多個server節點 server{ #監聽443端口 listen 443 ssl; #對應的域名,改爲本身的域名就能夠了 server_name dataxxxx.tech; #從騰訊雲獲取到的第一個文件的全路徑 ssl_certificate cert/1_www.dataxxxx.tech_bundle.crt; #從騰訊雲獲取到的第二個文件的全路徑 ssl_certificate_key cert/2_www.dataxxxx.tech.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; #由於使用的是靜態的html網頁,因此直接使用location就能夠完成了。 location / { #文件夾 root html; #主頁文件 index index.html; } location /newApi/ { rewrite ^/newApi/(.*)$ /$1 break; #全部對後端的請求加一個api前綴方便區分,真正訪問的時候移除這個前綴 # proxy_pass http://localhost:9088; } } server{ listen 80; server_name 148.xx.xxxx.142; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; } server{ listen 80; server_name www.dataxxxx.tech; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; }
基於HTTPS的443端口就像基於http的80端口同樣,可省略。詳見以下例子
本文主要總結了後臺API接口暴露在公網IP或者域名上的基於SSL證書的一種HTTPS的加密方式,主要基於nginx配置。有任何疑問,我會耐心解答;有任何更好的建議或者解決方案,也請一併提出,好讓我有所提升。