docker - 特雷菲克。代理到另一个后端
问题描述
如果我请联系 domain.com/api/v0/add,我会得到预期的结果,但如果我在 domain.com/ipfs 发言,则会得到404。
如何代理以/ipfs方式开头的所有呼叫?
我简要研究了文档traefik
,但从未找到答案。
我有docker-compose.yml
文件:
version: '3.4'
volumes:
traefik: {}
services:
ipfs0:
container_name: ipfs0
image: ipfs/go-ipfs:release
ports:
- "4001:4001"
- "5001:5001"
- "8080:8080"
volumes:
- ./compose/ipfs0:/data/ipfs
ipfs1:
container_name: ipfs1
image: ipfs/go-ipfs:release
ports:
- "4101:4001" # ipfs swarm
- "5101:5001" # expose if needed/wanted
- "8180:8080" # exposes if needed/wanted
volumes:
- ./compose/ipfs1:/data/ipfs
traefik:
build:
context: .
dockerfile: ./compose/traefik/Dockerfile
depends_on:
- ipfs0
volumes:
- traefik:/etc/traefik/acme
ports:
- "0.0.0.0:80:80"
- "0.0.0.0:443:443"
并traefik.toml
归档
logLevel = "INFO"
defaultEntryPoints = ["http", "https"]
# Entrypoints, http and https
[entryPoints]
# http should be redirected to https
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
# https is the default
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
# Enable ACME (Let's Encrypt): automatic SSL
[acme]
# Email address used for registration
email = "*******************@gmail.com"
storage = "/etc/traefik/acme/acme.json"
entryPoint = "https"
onDemand = false
OnHostRule = true
# Use a HTTP-01 acme challenge rather than TLS-SNI-01 challenge
[acme.httpChallenge]
entryPoint = "http"
[file]
[backends]
[backends.ipfs0]
[backends.ipfs0.servers.server1]
path = "/api"
url = "http://ipfs0:5001"
[backends.ipfs1]
[backends.ipfs1.servers.server1]
path = "/ipfs"
url = "http://ipfs1:8180"
[frontends]
[frontends.ipfs0]
backend = "ipfs0"
passHostHeader = truea
[frontends.ipfs0.routes.dr1]
rule = "Host:domain.com"
[frontends.ipfs1]
backend = "ipfs1"
passHostHeader = true
[frontends.ipfs1.routes.dr1]
rule = "Host:domain.com"
解决方案
推荐阅读
- ruby-on-rails - 将 React 视图导出到 MS Word 文档
- python - Dymos:如何记录和可视化子系统的输入/输出?
- python - ImageField 未在 Django 中上传
- python - 我升级到 python3,现在 awscli 不工作
- python - 根据行的条件对一个数据框应用两种排序方法
- function - Flutter:帮助评估功能并在 Flutter 中按下按钮显示输出
- c++ - 我需要在我的 C++ 代码中使用向量或学习 STL
- javascript - 如何让 VsCode 从 es6 模块正确自动导入?
- php - 尝试合并两个表导致单个数组出现错误无法使用 [] 进行读取
- javascript - 音频[data-key="${event.keyCode}"])。解释这段代码