背景
在做ST的項目,用BMap,但是他們辦公環(huán)境又都是內(nèi)網(wǎng),只能在一臺DMZ區(qū)的電腦上反代,該電腦既能訪問外網(wǎng),又能同內(nèi)網(wǎng)其他電腦通信。
解決
Step 1.JS更改
手動下載:http://api.map.baidu.com/getscript?v=2.0&ak=YOURKEY&services=&t=20180823194355,保存成本地的bmap.js文件,然后把里邊的百度相關(guān)的dns全部挑出來,如下
//不全,我也不知道這些dns都是干嘛的,可能有漏掉的,但是不影響
api.map.baidu.com
api0.map.bdimg.com
api1.map.bdimg.com
api2.map.bdimg.com
shangetu0.map.bdimg.com
shangetu1.map.bdimg.com
shangetu2.map.bdimg.com
shangetu3.map.bdimg.com
shangetu4.map.bdimg.com
online0.map.bdimg.com
online1.map.bdimg.com
online2.map.bdimg.com
online3.map.bdimg.com
online4.map.bdimg.com
webmap0.map.bdimg.com
以api.map.baidu.com為例將其替換成我的ip:3333/api.map.baidu.com
重復(fù)上述步驟,把所有DNS全部替換了,保存。
然后在網(wǎng)頁里引用該bmap.js文件
Step 2.反向代理到本機(jī)
使用反向代理軟件,caddy, 在本機(jī)的3333反代上述域名
nginx也可以,但是我更喜歡caddy的配置語法
代碼如下:
:3333/api.map.baidu.com/ {
proxy / api.map.baidu.com
}
:3333/api0.map.bdimg.com/ {
proxy / api0.map.bdimg.com
}
:3333/api1.map.bdimg.com/ {
proxy / api1.map.bdimg.com
}
:3333/api2.map.bdimg.com/ {
proxy / api2.map.bdimg.com
}
:3333/shangetu0.map.bdimg.com/ {
proxy / shangetu0.map.bdimg.com
}
:3333/shangetu1.map.bdimg.com/ {
proxy / shangetu1.map.bdimg.com
}
:3333/shangetu2.map.bdimg.com/ {
proxy / shangetu2.map.bdimg.com
}
:3333/shangetu3.map.bdimg.com/ {
proxy / shangetu3.map.bdimg.com
}
:3333/shangetu4.map.bdimg.com/ {
proxy / shangetu4.map.bdimg.com
}
:3333/online0.map.bdimg.com/ {
proxy / online0.map.bdimg.com
}
:3333/online1.map.bdimg.com/ {
proxy / online1.map.bdimg.com
}
:3333/online2.map.bdimg.com/ {
proxy / online2.map.bdimg.com
}
:3333/online3.map.bdimg.com/ {
proxy / online3.map.bdimg.com
}
:3333/online4.map.bdimg.com/ {
proxy / online4.map.bdimg.com
}
:3333/webmap0.map.bdimg.com/ {
proxy / webmap0.map.bdimg.com
}
然后打開防火墻3333就應(yīng)該可以了。