我正在遵循教程 Production-postgis-vector-tiles-caching 。然而,当我尝试设置 pg_tileserve 在反向代理下提供图块并在反向代理下提供清漆时,我总是收到错误
Error 503 Backend fetch failed
。我的 docker-compose 看起来像
tiles:
image: pramsey/pg_tileserv
volumes:
- ./config/pg_tileserv.toml:/etc/pg_tileserv.toml
environment:
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASS}@${POSTGRES_HOST}/${POSTGRES_DB}
- TS_URLBASE=${VECTOR_TILES_URL}
- TS_BASEPATH=/tiles
depends_on:
db:
condition: service_healthy
ports:
- "32772:7800"
restart: always
cache:
image: eeacms/varnish
environment:
BACKENDS: 'tiles:7800'
DNS_ENABLED: 'false'
COOKIES: 'true'
PARAM_VALUE: '-p default_ttl=600'
VARNISH_BACKEND_PATH: '/'
depends_on:
tiles:
condition: service_started
restart: always
nginx:
image: nginx
volumes:
- ./sites-enabled:/etc/nginx/conf.d:ro
depends_on:
- tiles
- cache
ports:
- "80:80"
我的 nginx 配置如下所示:
location /tiles {
proxy_pass http://tiles;
}
location /cache {
proxy_pass http://cache;
}
考虑到我的图块可以在 http://localhost/tiles 上使用并且清漆应该可以从 http://localhost/cache 上使用,我如何修改我的清漆配置
至于503错误,可以使用
varnishlog
来调试。请在您的 Varnish 容器中运行以下命令来了解发生了什么:
docker exec -ti -u0 cache varnishlog -g request -q "RespStatus == 503"
请将相关日志输出附加到您的问题中。
但是,您的
docker-compose.yml
似乎暴露了一些不一致之处:您的 tiles
服务器执行 32772:7800
端口转发。意味着本地端口 32772
正在转发到主机端口 7800
。
您的
BACKENDS
容器的 cache
环境变量仍然引用 7800
容器上的本地端口 tiles
。
要么按照
教程中的操作,将
tiles
服务器的本地端口更改回 7800
。或者,如果由于某种原因,端口 32772
是正确的,请更改您的 BACKENDS
配置并将其指向端口 32772
。
另请考虑使用官方 Varnish Docker 镜像。它得到社区和 Varnish 软件的支持。