WSL2部署的OSM瓦片虚拟主机无法从Windows浏览器访问报404
WSL2环境OpenStreetMap瓦片服务器访问404排查
基础部署信息
- 部署环境:WSL2 Ubuntu 20.04
- 已完成部署步骤:全量OSM数据表创建、Mapnik样式表生成
- WSL2适配调整:原流程中所有
systemctl命令替换为service命令执行 - 配置服务域名:
tile.gearmap.com - 故障现象:Windows主机端Chrome访问
http://tile.gearmap.com/osm/0/0/0.png返回404,无法加载瓦片
当前已落地配置
Apache虚拟主机配置(/etc/apache2/sites-available/tileserver_site.conf)
<VirtualHost *:80> ServerName tile.gearmap.com LogLevel info Include /etc/apache2/conf-available/renderd.conf </VirtualHost>
renderd服务配置(/etc/renderd.conf)
[renderd] stats_file=/run/renderd/renderd.stats socketname=/run/renderd/renderd.sock num_threads=10 tile_dir=/var/cache/renderd/tiles [mapnik] plugins_dir=/usr/lib/mapnik/3.1/input font_dir=/usr/share/fonts/truetype font_dir_recurse=true [default] URI=/osm/ XML=/home/osm/openstreetmap-carto/style.xml HOST=tile.gearmap.com
服务运行权限配置
[Service] User=osm
已验证状态
- Apache2运行状态:

- Windows侧hosts解析配置:

按优先级排查根因
- 检查Apache配置是否启用
执行命令查看已启用的站点和配置段:
若目录中没有ls /etc/apache2/sites-enabled/ ls /etc/apache2/conf-enabled/tileserver_site.conf、renderd.conf的软链接,执行以下命令补全启用,同时确保依赖模块开启,之后重载Apache:a2ensite tileserver_site.conf a2enconf renderd a2enmod proxy proxy_http unixd rewrite service apache2 reload - 检查renderd服务运行状态
执行命令确认进程、运行目录、socket文件状态:
若socket文件不存在,先创建运行目录和瓦片缓存目录,授权给osm用户后重启服务:ps aux | grep renderd ls -l /run/renderd/
其中mkdir -p /run/renderd /var/cache/renderd/tiles chown -R osm:osm /run/renderd /var/cache/renderd/tiles chmod -R o+rX /home/osm/ service renderd restartchmod命令用于兜底修复样式文件、OSM数据目录的读权限,避免renderd进程无权读取style.xml导致瓦片生成失败。 - 本地回环测试定位故障边界
在WSL2终端内直接执行curl访问本地服务,判断故障出在服务本身还是网络层:
若WSL2内部访问也返回404,直接查看Apache错误日志定位具体问题,日志路径为curl -v http://127.0.0.1/osm/0/0/0.png/var/log/apache2/error.log,执行tail -f /var/log/apache2/error.log实时打印日志后再触发访问请求,即可拿到明确报错(常见为socket文件权限拒绝、样式文件路径不存在、数据库连接失败)。
若WSL2内部访问正常、Windows侧访问404,为WSL2 NAT网络端口映射问题:- WSL2内执行
ip a查看eth0网卡的IPv4地址 - Windows端打开管理员权限PowerShell,执行端口转发规则添加:
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=80 connectaddress=<填写上一步查到的WSL2 IPv4地址>
- WSL2内执行
- 确认Windows侧域名解析生效
修改hosts文件后,在Windows cmd中执行ipconfig /flushdns刷新本地DNS缓存,再执行ping tile.gearmap.com,确认返回解析地址为127.0.0.1即可。
这类404问题90%以上集中在三个点:renderd未正常启动、Apache配置未启用、WSL2端口未转发,按上述步骤逐一排查即可定位。
内容的提问来源于stack exchange,提问作者Debayan Mandal
相关产品推荐
相关产品推荐

