内网访问高德地图nginx代理

项目需求:A服务器在内网,不能访问互联网,B服务器在外网,可以访问互联网,客户端电脑只能访问A服务器,客户端电脑怎么访问高德地图?

实现思路:客户端访问A服务器,A再访问B服务器,B请求高德地图api js并返回给A服务器,A服务器nginx安装ngx_http_sub_module模块,将api js中的所有域名替换成自己的代理地址再返回给客户端

注意事项:

1、下面配置只实现了基本的地图功能,如需实现更复杂的功能,还需代理如下地址

http://www.w3.orghttps://gaode.comhttp://m.amap.comhttp://vector.amap.comhttp://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;
    }
}

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值