内网反代百度地图

背景

在做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就应该可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容