内网访问高德地图nginx代理
项目需求:A服务器在内网,不能访问互联网,B服务器在外网,可以访问互联网,客户端电脑只能访问A服务器,客户端电脑怎么访问高德地图?实现思路:客户端访问A服务器,A再访问B服务器,B请求高德地图api js并返回给A服务器,A服务器nginx安装ngx_http_sub_module模块,将api js中的所有域名替换成自己的代理地址再返回给客户端注意事项:1、下面配置只实现了基本的地图功能,如需实
项目需求:A服务器在内网,不能访问互联网,B服务器在外网,可以访问互联网,客户端电脑只能访问A服务器,客户端电脑怎么访问高德地图?
实现思路:客户端访问A服务器,A再访问B服务器,B请求高德地图api js并返回给A服务器,A服务器nginx安装ngx_http_sub_module模块,将api js中的所有域名替换成自己的代理地址再返回给客户端
注意事项:
1、下面配置只实现了基本的地图功能,如需实现更复杂的功能,还需代理如下地址
http://www.w3.org、https://gaode.com、http://m.amap.com、http://vector.amap.com、http://a.amap.com
2、http://vdata.amap.com/style_icon/icon-normal-small.png 、http://vdata.amap.com/style_icon/icon-biz-small.png 这两个图片集是在动态脚本中访问的,所以需要将eval(b)和eval(fd)中的脚本替换一下
3、如果客户端电脑可以直接访问B服务器的话,可以将两个配置文件合并,只在B服务器安装一个nginx即可
A服务器nginx配置:
server {
listen 8080;
server_name localhost;
location /maps {
proxy_set_header Accept-Encoding "";
proxy_pass http://B服务器ip:8080/maps;
sub_filter_types *;
sub_filter_once off;
sub_filter 'http://webapi.amap.com' 'http://B服务器ip:8080/webapi';
sub_filter 'http://restapi.amap.com' 'http://B服务器ip:8080/restapi';
sub_filter 'http://vdata.amap.com' 'http://B服务器ip:8080/vdata';
sub_filter '/webapi.amap.com' '/B服务器ip:8080\/webapi';
sub_filter '/restapi.amap.com' '/B服务器ip:8080\/restapi';
sub_filter '/vdata.amap.com' '/B服务器ip:8080\/vdata';
sub_filter 'webapi.amap.com' 'B服务器ip:8080/webapi';
sub_filter 'restapi.amap.com' 'B服务器ip:8080/restapi';
sub_filter 'vdata.amap.com' 'B服务器ip:8080/vdata';
sub_filter 'wprd0{1,2,3,4}.is.autonavi.com' 'B服务器ip:8080/wprd0{1,2,3,4}';
sub_filter 'eval(b)' 'eval(b.replace(/vdata\.amap\.com/g,"B服务器ip:8080/vdata"))';
sub_filter 'eval(fd)' 'eval(fd.replace(/vdata\.amap\.com/g,"B服务器ip:8080/vdata"))';
}
location / {
proxy_pass http://172.16.10.180:8080;
}
}
B服务器nginx配置:
server {
listen 8080;
server_name localhost;
location /maps {
resolver 8.8.8.8;
set $backend "webapi.amap.com";
proxy_pass http://$backend;
}
location ~* ^/webapi(.*) {
resolver 8.8.8.8;
set $backend "webapi.amap.com";
proxy_pass http://$backend$1$is_args$args;
}
location ~* ^/restapi(.*) {
resolver 8.8.8.8;
set $backend "restapi.amap.com";
proxy_pass http://$backend$1$is_args$args;
}
location ~* ^/vdata(.*) {
resolver 8.8.8.8;
set $backend "vdata.amap.com";
proxy_pass http://$backend$1$is_args$args;
}
location ~* ^/wprd0(\d*)/(.*) {
resolver 8.8.8.8;
set $backend "is.autonavi.com";
proxy_pass http://wprd0$1.$backend/$2$is_args$args;
}
}
更多推荐
所有评论(0)