在 docker 中使用子路径进行反向代理清漆

问题描述 投票:0回答:1

我正在遵循教程 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 上使用,我如何修改我的清漆配置

nginx docker-compose varnish varnish-vcl
1个回答
0
投票

至于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 软件的支持。

© www.soinside.com 2019 - 2024. All rights reserved.