Nginx反代GoogleAPI,解决谷歌地图图层无法访问的问题

1.0. 前言:

由于公司业务需求,需要使用高德地图api + 谷歌图层覆盖,但是由于在2021.1.11号之前所有国内可以访问谷歌图层的链接全部失效,所以决定使用 阿里云香港服务器 + nginx 做一下反代,保证图层可以获取到。

1.1 选择的是阿里云香港服务器

测试的时候买的是1C1G1M的服务器.. 所以最后在获取图层贴图的时候 比较慢..

1.2 安装lnmp

wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh nginx复制代码

1.3 安装nginx相关包

yum install bison git git clone https://github.com/agentzh/sregex cd sregex make && make install cd /usr/local/nginx/ mkdir modules && cd modules git clone https://github.com/agentzh/replace-filter-nginx-module cd /root/lnmp1.6 vim lnmp.conf复制代码

修改其中一行

Nginx_Modules_Options="--add-module=/usr/local/nginx/modules/replace-filter-nginx-module --with-ld-opt='-Wl,-rpath,/usr/local/lib'"复制代码

重新编译

./upgrade.sh nginx # nginx 1.16.1,会提示编译版本,输入1.16.1即可复制代码

添加主机,带ssl

lnmp vhost add复制代码

会提示输入域名:比如maps.{maps.your-domain.com你的域名}.com,其他一堆配置我都直接回车默认跳过了

修改虚拟主机nginx配置文件

cd /usr/local/nginx/conf/vhost/ vi {maps.your-domain.com你的域名}.conf复制代码

1.4 配置https

因为官网使用了 htpps,所以这里必须使用https的配置, 以我们的

server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name {maps.your-domain.com 你的域名}; ssl_certificate /usr/local/nginx/conf/ssl/{maps.your-domain.com你的域名}/xxxx.pem; #将domain name.pem替换成您证书的文件名称。 这里可以参考自己服务器的https配置, 只需要把证书文件上传到对应位置就可以了。 ssl_certificate_key /usr/local/nginx/conf/ssl/{maps.your-domain.com你的域名}/xxxx.key; #将domain name.key替换成您证书的密钥文件名称。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。 ssl_prefer_server_ciphers on; #error_page 404 /404.html; access_log /home/wwwlogs/{maps.your-domain.com你的域名}.log; location /maps/ { #MIME TYPE default_type text/javascript; proxy_set_header Accept-Encoding ''; proxy_pass https://maps.googleapis.com/maps/; replace_filter_max_buffered_size 500k; replace_filter_last_modified keep; replace_filter_types text/javascript application/javascript; include vhost/replace_cn.txt; } location /maps-api-v3/ { proxy_pass https://maps.googleapis.com/maps-api-v3/; } include vhost/location_cn.txt; }复制代码

1.5 http配置

如果是http则需要这样配置

server { listen 80; #listen [::]:80; server_name 你的域名.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/你的域名.com; access_log /home/wwwlogs/你的域名.log; location /maps/ { #MIME TYPE default_type text/javascript; proxy_set_header Accept-Encoding ''; # 这里注意是 http而不是https proxy_pass http://maps.googleapis.com/maps/; replace_filter_max_buffered_size 500k; replace_filter_last_modified keep; replace_filter_types text/javascript application/javascript; include vhost/replace_cn.txt; } location /maps-api-v3/ { proxy_pass http://maps.googleapis.com/maps-api-v3/; } include vhost/location_cn.txt; }复制代码

1.6 添加指定文件

vi location_cn.txt复制代码

如下内容 基本不用动

location /e173754b3b1bbd62a0be9c4afea73fdfa/ { proxy_pass https://mts0.google.com/; } location /ce60bcadc66cea58583ddd700f7d80bea/ { proxy_pass https://mts1.google.com/; } location /e6ff3de47e3134794d4442b83c841f20a/ { proxy_pass https://khms0.google.com/; } location /da42f38f94ce6ac80e2806122a7b1933a/ { proxy_pass https://khms1.google.com/; } location /7abac8c11716f6949e7b23f76e60fcd0a/ { proxy_pass https://khms0.googleapis.com/; } location /444c94a4157de3c06c435132eb2f1ac5a/ { proxy_pass https://khms1.googleapis.com/; } location /c7d52b85d86a06df50621e669557ea05a/ { proxy_pass https://mts0.googleapis.com/; } location /57cf283b871304a296c3bd8acde4cc22a/ { proxy_pass https://mts1.googleapis.com/; } location /3e0ae61058d4e7be83d222fb1f107310a/ { proxy_pass https://maps.gstatic.com/; } location /ae5102db1431e3fd01dc8336085d150fa/ { proxy_pass https://csi.gstatic.com/; } location /946eb25413c43b235b5806e999044125a/ { proxy_pass https://maps.google.com/; } location /dcd331573c0980eab6fe7346468e9974a/ { proxy_pass https://gg.google.com/; } location /0a68229ef53c18f5fc37f4106f09a6c9a/ { proxy_pass https://khms.google.com/; } location /e55bb777699a599b09d3011043439a06a/ { proxy_pass https://earthbuilder.googleapis.com/; } location /471b015572d3907c09789af41061e964a/ { proxy_pass https://mts.googleapis.com/; } location /3a4544842f4e8e90a152257489cb594da/ { proxy_pass https://static.panoramio.com.storage.googleapis.com/; } location /85471b91952baa51514c7fad7c57b8eba/ { proxy_pass https://lh3.ggpht.com/; } location /44b3a55364b2f63e51f2c6e911f8506fa/ { proxy_pass https://lh4.ggpht.com/; } location /3cc4fbda8f98767ab275af32669f56d4a/ { proxy_pass https://lh5.ggpht.com/; } location /2815063fda2dd0ccf9c566d1f089d4bca/ { proxy_pass https://lh6.ggpht.com/; } location /468724d08bce9811e989b526c6222863a/ { proxy_pass https://www.google.com/; }复制代码

然后是反代域名映射,这里需要修改成你的域名

vi replace_cn.txt复制代码
replace_filter mts0.google.com maps.your-domain.com/e173754b3b1bbd62a0be9c4afea73fdfa ig; replace_filter mts1.google.com maps.your-domain.com/ce60bcadc66cea58583ddd700f7d80bea ig; replace_filter khms0.google.com maps.your-domain.com/e6ff3de47e3134794d4442b83c841f20a ig; replace_filter khms1.google.com maps.your-domain.com/da42f38f94ce6ac80e2806122a7b1933a ig; replace_filter khms0.googleapis.com maps.your-domain.com/7abac8c11716f6949e7b23f76e60fcd0a ig; replace_filter khms1.googleapis.com maps.your-domain.com/444c94a4157de3c06c435132eb2f1ac5a ig; replace_filter mts0.googleapis.com maps.your-domain.com/c7d52b85d86a06df50621e669557ea05a ig; replace_filter mts1.googleapis.com maps.your-domain.com/57cf283b871304a296c3bd8acde4cc22a ig; replace_filter maps.gstatic.com maps.your-domain.com/3e0ae61058d4e7be83d222fb1f107310a ig; replace_filter csi.gstatic.com maps.your-domain.com/ae5102db1431e3fd01dc8336085d150fa ig; replace_filter maps.googleapis.com maps.your-domain.com ig; replace_filter maps.google.com maps.your-domain.com/946eb25413c43b235b5806e999044125a ig; replace_filter gg.google.com maps.your-domain.com/dcd331573c0980eab6fe7346468e9974a ig; replace_filter www.google.com maps.your-domain.com/468724d08bce9811e989b526c6222863a ig; replace_filter khms.google.com maps.your-domain.com/0a68229ef53c18f5fc37f4106f09a6c9a ig; replace_filter earthbuilder.googleapis.com maps.your-domain.com/e55bb777699a599b09d3011043439a06a ig; replace_filter mts.googleapis.com maps.your-domain.com/471b015572d3907c09789af41061e964a ig; replace_filter static.panoramio.com.storage.googleapis.com maps.your-domain.com/3a4544842f4e8e90a152257489cb594da ig; replace_filter lh3.ggpht.com maps.your-domain.com/85471b91952baa51514c7fad7c57b8eba ig; replace_filter lh4.ggpht.com maps.your-domain.com/44b3a55364b2f63e51f2c6e911f8506fa ig; replace_filter lh5.ggpht.com maps.your-domain.com/3cc4fbda8f98767ab275af32669f56d4a ig; replace_filter lh6.ggpht.com maps.your-domain.com/2815063fda2dd0ccf9c566d1f089d4bca ig;复制代码

然后就可以重启Nginx了,不过好像这里直接restart会出错,至少我这里一直报错,解决不了

systemctl restart nginx复制代码

解决办法是 重启了一下服务器……

1.7 测试

通过上面搭建完反向代理后测试结果Nginx反代GoogleAPI,解决谷歌地图图层无法访问的问题_谷歌地图图层可以正常访问了..

PS: 因为上面配置的时候,采用的是Nginx反代GoogleAPI,解决谷歌地图图层无法访问的问题_谷歌地图_02这两个路径反代 mts0.google.com 路径下资源 所以在使用的时候,需要通过

{maps.your-domain.com你的域名} /e173754b3b1bbd62a0be9c4afea73fdfa/vt/lyrs=s@142&hl=zh-CN&gl=cn&x=6759&y=3209&z=13&s=Galil复制代码

这种方式获取资源.. 其他同理。

原文链接:https://blog.51cto.com/u_15087086/2598503

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享