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

Ubuntu下Docker Compose部署Lizmap外部访问500错误及安全配置求助

问题解决:Lizmap Docker Compose外部访问异常及安全部署方案

问题描述

在Ubuntu机器上通过Docker Compose部署Lizmap后,本地通过localhost:8090可正常登录使用。将env.default中的LIZMAP_PORT从127.0.0.1:8090改为0.0.0.0:8090以支持外部访问后,出现以下问题:

  • 外部访问时仅显示无样式的极简登录表单
  • 登录后点击页面任意位置触发500内部服务器错误

当前env.default配置如下:

COPY_COMPOSE_FILE=0
LIZMAP_VERSION_TAG=${LIZMAP_VERSION_TAG:-"3.5"}
QGIS_VERSION_TAG=${QGIS_VERSION_TAG:-"3.22"}
POSTGIS_VERSION=${POSTGIS_VERSION:-"13-3"}
POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-"postgres"}
POSTGRES_LIZMAP_DB=${POSTGRES_LIZMAP_DB:-"lizmap"}
POSTGRES_LIZMAP_USER=${POSTGRES_LIZMAP_USER:-"lizmap"}
POSTGRES_LIZMAP_PASSWORD=${POSTGRES_LIZMAP_PASSWORD:-"lizmap1234!"}
QGIS_MAP_WORKERS=${QGIS_MAP_WORKERS:-"1"}
WPS_NUM_WORKERS=${WPS_NUM_WORKERS:-"1"}
LIZMAP_PORT=${LIZMAP_PORT:-"0.0.0.0:8090"}
OWS_PORT=${OWS_PORT:-"127.0.0.1:8091"}
WPS_PORT=${WPS_PORT:-"127.0.0.1:8092"}
POSTGIS_PORT=${POSTGIS_PORT:-"127.0.0.1:5432"}
POSTGIS_ALIAS=${POSTGIS_ALIAS:-"db.lizmap"}

排查与解决步骤

1. 修复静态资源加载问题(无样式表单)

无样式问题通常是Lizmap生成的静态资源URL仍指向localhost,导致外部客户端无法加载CSS/JS文件。解决方法:

  • 在env.default中添加或修改LIZMAP_URL配置,设置为外部可访问的地址:
    LIZMAP_URL=http://你的服务器公网IP:8090
    # 若已配置域名则使用:LIZMAP_URL=https://你的域名
    
  • 重新部署容器:
    docker-compose down
    docker-compose up -d
    

2. 定位并修复500错误

500错误需查看容器日志定位具体原因:

  • 查看Lizmap web容器日志:
    docker-compose logs lizmap-web
    
  • 常见错误及修复:
    • 数据库连接问题:确认POSTGIS_ALIAS配置正确,容器内部可通过db.lizmap访问PostGIS;若修改过数据库密码,需同步更新POSTGRES_LIZMAP_PASSWORD并重启所有容器。
    • 文件权限问题:进入lizmap-web容器修复静态文件权限:
      docker-compose exec lizmap-web chown -R www-data:www-data /var/www/html/lizmap
      
    • 路径配置错误:检查Lizmap后台的服务配置,确保OWS/WPS服务地址与外部访问地址一致。

3. 验证端口映射配置

确认docker-compose.yml中Lizmap服务的端口映射已正确应用LIZMAP_PORT变量,示例片段:

services:
  lizmap:
    ports:
      - "${LIZMAP_PORT}:80"

安全服务器环境搭建建议

1. 用Nginx反向代理替代直接暴露端口

  • 安装Nginx并配置反向代理,将公网443端口(HTTPS)转发到Lizmap容器的80端口
  • 申请Let's Encrypt SSL证书,强制HTTPS访问,禁止HTTP
  • Nginx配置示例(简化版):
    server {
        listen 443 ssl;
        server_name 你的域名;
    
        ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
    
        location / {
            proxy_pass http://localhost:8090;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

2. 强化认证与权限

  • 立即修改所有默认密码:POSTGRES_PASSWORD、POSTGRES_LIZMAP_PASSWORD,使用复杂随机密码
  • 在Lizmap后台创建专属用户,禁用默认管理员账号或修改其密码
  • 限制Lizmap后台访问IP,可通过Nginx配置允许特定IP段访问/admin路径

3. 限制端口暴露

  • 保持OWS_PORT、WPS_PORT、POSTGIS_PORT为127.0.0.1:端口,仅允许本地容器/服务访问,禁止公网暴露
  • 用Ubuntu防火墙ufw仅开放必要端口:
    ufw allow 22/tcp  # SSH
    ufw allow 443/tcp # HTTPS
    ufw enable
    

4. 定期维护

  • 定期拉取最新镜像更新服务:
    docker-compose pull
    docker-compose up -d
    
  • 备份Lizmap配置文件与PostGIS数据库,避免数据丢失

内容的提问来源于stack exchange,提问作者JAY EFFE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:02:50