若是公司有微信開發需求的話,得有備案了的域名和80端口html
員工開發調試是個問題,若是每次都找運維修改,維護,會被K的。nginx
交換機設置DMZ到一臺固定服務器,在上面部署nginx/openrestygit
能夠gitlab(svn)+jenkins/ansible等運維方式實現每次修改配置文件後,提交到gitlab觸發CI/CD推送到nginx服務器,執行reloadredis
固然變通的也有,好比,openresty+lua訂閱redis,發現變動後,讀取redis的配置,rewrite到本地配置文件而後reload,可是總歸是比較笨重的小程序
下面說的是經過server_name
設置通配符來實現動態域名的方案安全
server {
listen 443 http2 ssl;
listen 80;
server_name ~(?<h>.+)_(?<a>\d+)_(?<b>\d+).domain.com;
location / {
//proxy settings ...
//$h 是abc_1_1中的abc
//proxy_set_header Host $h;
proxy_pass http://192.168.$a.$b;
}
}
複製代碼
使用方法bash
開發者機器上安裝nginx,而且配置相應的vhost服務器
server {
listen 80;
server_name abc*;
location / {
root html;
index index.html;
}
}
複製代碼
curl http[s]://abc_1_1.domain.com
複製代碼
等於微信
curl -H"abc_1_1.domain.com" http[s]://192.168.1.1
複製代碼
爲啥用_
分隔,而不是用.
分隔成多級域名,是由於Let's Encrypt的通配符是同級通配符,好比*.domain.com
只支持a.domian.com
這種,a.b.domain.com
是無效的,若是不須要https訪問(小程序須要https)的話,則能夠自行修改爲.
分隔微信開發
注意,此方案會存在必定的安全隱患,好比,ip爆破(能夠設置白名單訪問,basic auth,限制動態ip範圍).
好處是維護簡單(新增域名,更改域名->ip映射,修改配置,採集數據,打印日誌等)
本文只是其中反向代理中的一種,相似的反代方案還有frp和ngrok,還能夠用dns(bind,dnsmasq).