news 2026/10/13 4:01:00

使用Nginx基于下载的全球瓦片数据本地搭建瓦片底图服务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Nginx基于下载的全球瓦片数据本地搭建瓦片底图服务

如何你已经有了 按 level(zoom)分类的 JPG或PNG 格式的瓦片数据需要发布瓦片数据
✅ 首选:Nginx /Apache 静态服务器直发
✅ 大规模:TileServer / MBTiles / 对象存储

为什么不用Geoserver?
GeoServer 不适合“管理已经切好的 XYZ/JPG 瓦片” GeoServer 的设计前提是:
原始空间数据 → 动态 / 缓存切片. 而不是: 已切好的瓦片 → 再发布

Nginx(其次 Apache)静态发布就是效率最高、最简单、最稳定的方案,而且这是行业共识,不是“经验之谈”。
静态瓦片请求的理想路径是:
HTTP 请求
→ 内核 sendfile
→ 文件系统页缓存
→ 网卡
❌ 没有 Python / Java
❌ 没有渲染
❌ 没有数据库
❌ 没有坐标计算
👉 IO 直通 = 性能极限

Nginx 的三大杀手级优势

  1. 事件驱动(epoll)
  • 单进程可扛数万并发
  • 非阻塞 IO
  1. sendfile + mmap
  • 文件直接从内核到网卡
  • 零拷贝
  1. 文件系统缓存命中率极高
  • 热瓦片 = 内存直出
  • QPS 几乎只看网卡带宽

一、最终目标

访问方式:
http://127.0.0.1/tiles/{z}/{x}/{y}.jpg
特点:
⚡ 极限性能
📦 零依赖
🔒 可加 HTTPS / 鉴权
🧱 可扩展 CDN

二、准备工作

1. 安装 Nginx

sudo apt update sudo apt install -y nginx

检查:

nginx -v

2. 准备瓦片目录(非常重要)

推荐目录结构

/data/tiles/ └── 0/ └── 0/ └── 0.jpg

即:
/data/tiles/{z}/{x}/{y}.jpg

📌 注意:
目录名必须是数字
文件名只包含 y.jpg

3. 权限设置(很多人卡在这里)

sudo chown -R www-data:www-data /data/tiles sudo chmod -R 755 /data/tiles

三、Nginx 核心配置

1. 新建站点配置

sudo nano /etc/nginx/sites-available/tiles.conf

2.tiles.conf内容

server { listen 80 default_server; listen [::]:80 default_server; # 瓦片根目录 #root /data; # 静态瓦片发布 location /tiles/ { alias /data/tiles/; autoindex on; # 直接命中磁盘文件 try_files $uri =404; # 缓存 1 年(瓦片不可变) expires 365d; add_header Cache-Control "public, immutable"; # 允许跨域 add_header Access-Control-Allow-Origin *; # 关闭访问日志(减少 IO) access_log off; } # 防止误访问根目录 location / { return 404; } }

3. 启用站点

sudo ln -s /etc/nginx/sites-available/tiles.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx

四、系统级性能开关(必须)

编辑主配置:

sudo nano /etc/nginx/nginx.conf

确保这些是 on:

sendfile on; tcp_nopush on; tcp_nodelay on; aio threads;

五、验证是否正常(3 步)
1️⃣ 浏览器访问一个瓦片

http://127.0.0.1/tiles/1/0/0.jpg

✔ 能显示图片 = 成功
2️⃣ 用 curl 看缓存头
curl -I http:///127.0.0.1/tiles/1/0/1.jpg
应看到:
Cache-Control: public, immutable
Expires: …
3️⃣ Leaflet 测试
index.html

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <title>Leaflet 双 TileLayer(低分 + ROI 高分)</title> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /> <style> html, body, #map { width: 100%; height: 100%; margin: 0; padding: 0; } </style> </head> <body> <div id="map"></div> <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> <script> /* ========================= 1️⃣ 地图初始化 ========================= */ const map = L.map('map', { center: [35, 105], // 中国附近 zoom: 4, minZoom: 1, maxZoom: 18 }); /* ========================= 2️⃣ 瓦片 URL ========================= */ const TILE_URL = 'http://127.0.0.1/tiles/{z}/{x}/{y}.jpg'; /* ========================= 3️⃣ 低分全球底图(z ≤ 5) ========================= */ const lowResLayer = L.tileLayer(TILE_URL, { tms: true, // ⚠️ 你的是 TMS minZoom: 1, maxZoom: 18, maxNativeZoom: 5, // 🔑 全球真实瓦片只到 5 attribution: 'Low Resolution Tiles' }); /* ========================= 4️⃣ 高分 ROI 图层(z ≥ 6) ========================= */ const highResLayer = L.tileLayer(TILE_URL, { tms: true, // 同样是 TMS minZoom: 6, // 🔑 6 级开始才请求 maxZoom: 18, opacity: 1.0, attribution: 'High Resolution ROI Tiles' }); /* ========================= 5️⃣ 叠加顺序(关键) ========================= */ // ⚠️ 先加低分,再加高分 lowResLayer.addTo(map); highResLayer.addTo(map); /* ========================= 6️⃣ 调试:点击查看当前级别 ========================= */ map.on('click', (e) => { console.log( `lat=${e.latlng.lat.toFixed(6)}, ` + `lon=${e.latlng.lng.toFixed(6)}, ` + `zoom=${map.getZoom()}` ); }); </script> </body> </html>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 8:06:37

深度测评9个AI论文平台,专科生搞定毕业论文+格式规范!

深度测评9个AI论文平台&#xff0c;专科生搞定毕业论文格式规范&#xff01; AI工具助力论文写作&#xff0c;专科生也能轻松应对 随着人工智能技术的不断进步&#xff0c;越来越多的AI工具开始进入学术写作领域&#xff0c;为学生和研究者提供高效、便捷的支持。对于专科生来说…

作者头像 李华
网站建设 2026/10/10 16:46:48

跨境电商平台的对接流程

跨境电商平台的对接已不再是简单的“API调取”&#xff0c;而是演变为**“全球分发本地化合规”**的复合系统开发。随着亚马逊SP-API的全面迭代、TikTok Shop的爆发以及各国税务合规&#xff08;如欧盟IOSS、美国Sales Tax&#xff09;的自动化要求&#xff0c;对接方法变得更加…

作者头像 李华
网站建设 2026/10/13 3:01:10

北大Nature重磅!忆阻器芯片能效提升百倍、算力暴涨4倍

北京大学人工智能研究院陶耀宇研究员与集成电路学院杨玉超教授团队&#xff0c;近日在后摩尔时代计算架构领域取得重大突破。他们摒弃了传统芯片依靠晶体管逻辑门堆砌算力的老路&#xff0c;另辟蹊径&#xff0c;利用两种不同特性的忆阻器进行异质集成&#xff0c;构建了一套全…

作者头像 李华
网站建设 2026/10/6 17:25:16

【数据库技术基础】SQL 的基本组成

SQL 由如下几个部分组成&#xff1a;关系数据库的三级模式结构数据定义语言。SQL DDL 提供定义关系模式和视图、删除关系和视图、修改关系模式的命令。交互式数据操纵语言。SQL DML 提供查询、是插入、删除和修改的命令。事务控制&#xff08;Transaction Control&#xff09;。…

作者头像 李华
网站建设 2026/10/9 14:00:01

保卫你的无线网络:WiFi安全最容易被忽视的这几点,附全面自查清单

简介&#xff1a;WiFi密码破解是一个技术性的话题&#xff0c;涉及网络安全和无线通信。了解WiFi网络的基本安全原理对于保护个人网络安全至关重要。本指南介绍了WiFi网络的安全协议&#xff0c;如何使用Aircrack-ng工具集进行安全测试&#xff0c;并详细说明了WiFi密码破解的步…

作者头像 李华