内网反代百度地图

背景

在做ST的项目,用BMap,但是他们办公环境又都是内网,只能在一台DMZ区的电脑上反代,该电脑既能访问外网,又能同内网其他电脑通信。

解决

Step 1.JS更改

手动下载:http://api.map.baidu.com/getscript?v=2.0&ak=YOURKEY&services=&t=20180823194355,保存成本地的bmap.js文件,然后把里边的百度相关的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
重复上述步骤,把所有DNS全部替换了,保存。
然后在网页里引用该bmap.js文件

Step 2.反向代理到本机

使用反向代理软件,caddy, 在本机的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就应该可以了。

你可能感兴趣的:(内网反代百度地图)