GEOFlow 可通过反向代理映射到子域名或一级目录。子域名只需转发 Web 服务;子目录还需传递路径前缀并校准 APP_URL。
子域名部署:直接转发到 GEOFlow Web
把 GEOFlow 放在一个独立子域名下,例如 https://geo.example.com,反向代理只需要将请求转发到容器的 Web 服务端口。
GEOFlow Docker 默认 Web 映射端口是 18080,因此典型的目标地址为 http://geoflow-app:8080。部署时在 .env.prod 中设置:
APP_URL=https://geo.example.com
一级目录部署:让反向代理传递前缀
如果 GEOFlow 需要部署在某个路径下,比如 https://example.com/wiki,则必须让反向代理传递 X-Forwarded-Prefix 请求头。GEOFlow 会识别该头自动为路由加上 /wiki 前缀,同时保持后台路径不变。
关键点:不要在 ADMIN_BASE_PATH 中写入目录前缀。正确的配置仍然是:
APP_URL=https://example.com/wiki
ADMIN_BASE_PATH=geo_admin
Nginx 反向代理示例配置
一个典型的 Nginx 一级目录反代配置如下(子域名只需去掉 X-Forwarded-Prefix 那一行):
location /wiki/ {
proxy_pass http://geoflow-app:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Prefix /wiki;
}
检查清单
部署完成后,按下面几条快速验证配置是否正确:
- 访问首页和后台登录页,确认路径自动带上了一级目录前缀。
- 检查浏览器开发者工具中的资源请求,CSS/JS 路径均基于
APP_URL生成,无 404 错误。 - 如果后台登录后出现跳转错误路径,通常是因为
APP_URL未包含目录前缀,或者反向代理未传递X-Forwarded-Prefix。
常见问题
Q:子目录部署后,首页能打开但后台样式错乱?
A:确认浏览器加载的静态资源路径中是否包含了目录前缀。缺失前缀往往是 X-Forwarded-Prefix 没有传递成功,或者 Nginx 的 proxy_pass 末尾缺少 /。
Q:APP_URL 已经配置了带前缀的地址,为什么后台依然无法登录?
A:先确认外部路径与 APP_URL 一致,再检查代理是否传递 X-Forwarded-Prefix;后台仍使用 ADMIN_BASE_PATH 指定的路径。