首页 > 解决方案 > Traefik 的简单反向代理示例

问题描述

有没有人有一个简单的配置示例,将端口 80 上的传入 http 请求重定向到端口 8080 上的特定静态 IP 以进行 traefik?

我在任何地方都找不到它!已经在他们的网站上呆了几个小时了。

这是他们从这里https://docs.traefik.io/routing/routers/#configuration-example的最佳示例:

## Forwarding all (non-tls) requests on port 3306 to a database service
## Static configuration
entryPoints:
  web:
    address: ":80"
  mysql:
    address: ":3306"   

我想要来自 NGINX 的类似以下内容:

events { }

http {
    upstream mop {
        server mop:3000;
    }
    server {
        listen   80;
        server_name  localhost;
        location /mop {
            proxy_pass http://mop;
        }
        location /mop/1 {
            proxy_pass http://mop;
        }
        location /mop/2 {
            proxy_pass http://mop;
        }
    }
}

标签: traefik

解决方案


对于这个简单的示例,您需要在静态配置中创建一个entryPoint和一个provider.

entryPoint定义 traefik 将接受传入请求的端口,并定义providertraefik 可以查询服务发现的一些现有基础架构组件。这可以是一些编排系统,例如DockerKubernetes。但是在这个简单的例子中,我们需要一个File提供者。

# Static configuration
[entryPoints]
  [entryPoints.web]
    address = ":80"

[providers]
  [providers.file]
    filename = "/path/to/dynamic/conf.toml"

在文件提供程序中,我们定义了动态配置的路径。在动态配置中,我们创建一个service(或后端)。这是我们希望 traefik 将请求路由到的服务器。

我们还需要创建一个router. 路由器匹配域或路径等规则,并将这些请求路由到所需的service. 在此示例中,我们将路径前缀/(所有请求)路由到服务my-service,然后指向http://localhost:8080.

# Dynamic configuration
[http]
  [http.routers]
    [http.routers.my-router]
      rule = "PathPrefix(`/`)"
      service = "my-service"

    [http.services]
      [http.services.my-service.loadBalancer]
        [[http.services.my-service.loadBalancer.servers]]
          url = "http://localhost:8080"

推荐阅读