You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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运行状态:Apache2服务运行截图
  • Windows侧hosts解析配置: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文件状态:
    ps aux | grep renderd
    ls -l /run/renderd/
    
    若socket文件不存在,先创建运行目录和瓦片缓存目录,授权给osm用户后重启服务:
    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 restart
    
    其中chmod命令用于兜底修复样式文件、OSM数据目录的读权限,避免renderd进程无权读取style.xml导致瓦片生成失败。
  • 本地回环测试定位故障边界
    在WSL2终端内直接执行curl访问本地服务,判断故障出在服务本身还是网络层:
    curl -v http://127.0.0.1/osm/0/0/0.png
    
    若WSL2内部访问也返回404,直接查看Apache错误日志定位具体问题,日志路径为/var/log/apache2/error.log,执行tail -f /var/log/apache2/error.log实时打印日志后再触发访问请求,即可拿到明确报错(常见为socket文件权限拒绝、样式文件路径不存在、数据库连接失败)。
    若WSL2内部访问正常、Windows侧访问404,为WSL2 NAT网络端口映射问题:
    1. WSL2内执行ip a查看eth0网卡的IPv4地址
    2. Windows端打开管理员权限PowerShell,执行端口转发规则添加:
      netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=80 connectaddress=<填写上一步查到的WSL2 IPv4地址>
      
  • 确认Windows侧域名解析生效
    修改hosts文件后,在Windows cmd中执行ipconfig /flushdns刷新本地DNS缓存,再执行ping tile.gearmap.com,确认返回解析地址为127.0.0.1即可。

这类404问题90%以上集中在三个点:renderd未正常启动、Apache配置未启用、WSL2端口未转发,按上述步骤逐一排查即可定位。

内容的提问来源于stack exchange,提问作者Debayan Mandal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:45:31