如何配置Nginx重写规则,实现/webgis路径反向代理至内部Lizmap服务
问题描述
我在Docker中部署了Lizmap服务,本地访问地址为http://192.168.1.85:8090。当前用Nginx将https://geoservizi.pippoepluto.net/反向代理到这个内部地址。现在想修改配置,把外部访问路径改成https://geoservizi.pippoepluto.net/webgis,这个路径依然代理到http://192.168.1.85:8090,同时要为所有请求URL添加/webgis前缀,不知道怎么实现。
当前的vhost配置块如下:
location / { 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; proxy_pass http://192.168.1.85:8090; }
解决方案
要实现这个需求,需要调整Nginx代理配置,同时修正Lizmap服务的路径识别逻辑,避免页面资源链接出错,具体操作如下:
1. 修改Nginx反向代理配置
将原有的根路径location替换为/webgis/路径匹配,并通过rewrite规则剥离外部请求的/webgis前缀后转发到Lizmap服务:
location /webgis/ { 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; # 移除请求URL中的/webgis前缀,再转发至内部服务 rewrite ^/webgis/(.*)$ /$1 break; proxy_pass http://192.168.1.85:8090; }
2. 配置Lizmap的基础路径
Lizmap默认会以根路径生成页面内的资源链接、API地址,如果不修改,访问/webgis路径后,页面内的脚本、样式会请求根路径下的资源,导致404错误。
需要修改Lizmap的本地配置文件(Docker环境下通常挂载在/var/www/lizmap/var/config/localconfig.ini,具体路径以你的挂载设置为准),在[services]区块添加或修改basePath项:
[services] basePath=/webgis
修改完成后,重启Nginx和Lizmap容器,确保配置生效。
内容的提问来源于stack exchange,提问作者Fabrizio Diotri
相关产品推荐
相关产品推荐

