通過Nginx反向代理,實現(xiàn)遠程調(diào)試本機代碼
閱讀本文大概需要 3 分鐘。
背景
方案
nginx反向代理到本地服務(wù),這樣在nginx層面做 HTTPS 就不需要改代碼了,只需修改 host 將后端測試環(huán)境域名指向?nginx?服務(wù)的 IP 即可,而且可以適用于其它的 HTTP 服務(wù)開發(fā)調(diào)試。
簽發(fā)證書
openssl工具生成一套根證書和對應(yīng)的服務(wù)證書。#?生成一個RSA私鑰
openssl?genrsa?-out?root.key?2048
#?通過私鑰生成一個根證書
openssl?req?-sha256?-new?-x509?-days?365?-key?root.key?-out?root.crt?\
????-subj?"/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=fakerRoot"
#?生成一個RSA私鑰
openssl?genrsa?-out?server.key?2048
#?生成一個帶SAN擴展的證書簽名請求文件
openssl?req?-new?\
????-sha256?\
????-key?server.key?\
????-subj?"/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=xxx.com"?\
????-reqexts?SAN?\
????-config?<(cat?/etc/pki/tls/openssl.cnf?\
????????<(printf?"[SAN]\nsubjectAltName=DNS:*.xxx.com,DNS:*.test.xxx.com"))?\
????-out?server.csr
#?使用之前生成的根證書做簽發(fā)
openssl?ca?-in?server.csr?\
????-md?sha256?\
????-keyfile?root.key?\
????-cert?root.crt?\
????-extensions?SAN?\
????-config?<(cat?/etc/pki/tls/openssl.cnf?\
????????<(printf?"[SAN]\nsubjectAltName=DNS:xxx.com,DNS:*.test.xxx.com"))?\
????-out?server.crt
root.crt:根證書server.key:服務(wù)證書私鑰server.crt:服務(wù)證書
注:生成的服務(wù)器證書域名要支持測試環(huán)境訪問的域名,否則瀏覽器會提示證書不安全。
nginx 配置
docker啟動了一個 nginx 容器進行訪問,并將證書和配置文件掛載到對應(yīng)的目錄:server?{
????listen?443?ssl;
????server_name?_;
????ssl_certificate?"/usr/local/nginx/ssl/server.pem";
????ssl_certificate_key?"/usr/local/nginx/ssl/server.key";
????location?/?{
????????proxy_set_header?X-Real-IP?$remote_addr;
????????proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
????????proxy_set_header?X-Forwarded-Proto?$scheme;
????????proxy_set_header?Host?$http_host;
????????proxy_set_header?X-NginX-Proxy?true;
????????proxy_set_header?Upgrade?$http_upgrade;
????????proxy_set_header?Connection?"upgrade";
????????proxy_pass?http://127.0.0.1:3000;
????????proxy_redirect?off;
????????proxy_http_version?1.1;
????}
}
ssl_certificate和ssl_certificate_key來指定服務(wù)器的證書和私鑰,proxy_pass指定開發(fā)環(huán)境的訪問地址。docker?run?-d?--name?https?-p?443:443?-v?~/forword/ssl:/usr/local/nginx/ssl?-v?~/forword/config/nginx.conf:/etc/nginx/conf.d/default.conf??nginx
安裝根證書
根證書安裝至操作系統(tǒng)中。

root.crt導(dǎo)入即可修改 host
nginx服務(wù)器的 IP,即可將前端請求轉(zhuǎn)發(fā)到開發(fā)環(huán)境上,通過瀏覽器地址欄的小鎖圖標可以看到證書,已驗證服務(wù)已經(jīng)部署成功。

后記
fidder這種中間人攻擊的方式來實現(xiàn),這里就不做多敘了。推薦閱讀:
用了 3 年 Apollo,這次我選擇了 Nacos,原因不多說了
微信掃描二維碼,關(guān)注我的公眾號
朕已閱?

