【问题标题】:Traefik - proxy to backend for angular applicationTraefik - 角度应用程序的后端代理
【发布时间】:2020-04-21 18:24:17
【问题描述】:

我已经用Nginx设置了一个代理,如下

    server {
       listen       80;
       server_name  localhost;

       location /api {
          proxy_pass https://api.mydomain.com/;
       }

       location / {
         root   /usr/share/nginx/html;
         index  index.html index.htm;      
       }

       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
          root   /usr/share/nginx/html;
       }
    }

我的 Dockerfile

       FROM node:12-alpine as builder
       WORKDIR /workspace
       COPY ./package.json ./
       RUN npm install
       COPY . .
      RUN npm run build

      FROM nginx
      COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
      COPY --from=builder /app/www /usr/share/nginx/html
      EXPOSE 80
      CMD ["nginx", "-g", "daemon off;"]

这工作正常但想用 Traefik 替换 Nginx 以用于上述代理设置。任何帮助将不胜感激,因为我对 traefik 很陌生。

【问题讨论】:

  • 对于 traefik,你在 Kubernetes 集群中使用它?你如何配置 Traefik?用静态文件?还是通过其他方式?
  • 我在 Kubernetes 集群中使用它。
  • 好的,现在是 traefik 1,7 或 2+ 版本(Traefik 在配置上在 2.0 版本中改变了很多东西)
  • 它的traefik 2 +

标签: docker nginx proxy traefik


【解决方案1】:

使用 Traefik 2+,您需要配置 2 个路由器: - 一个用于 API - 一个用于 web 应用程序

对于 API 代理,您将有如下规则:

rule = "Host(`example.com`) && Path(`/api`)"

并且 webapp 将把主机作为规则

rule = "Host(`example.com`)"

对于 kubernetes,您可以像这样在 ingress 中执行此操作:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: simpleingressroute
  namespace: default
spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/api`)
    kind: Rule
    services:
    - name: mywebapp-svc
      port: 80
  - match: Host(`example.com`)
    Kind: Rule
    services:
    - name: myapi-svc
      port: 80

如果 API 不在 kubernetes 集群内,您可以定义规则,使用 externalService,如下所示:

---
apiVersion: v1
kind: Service
metadata:
  name: myapi-svc
  namespace: default
spec:
  externalName: api.mydomain.com
  type: ExternalName

【讨论】:

  • API 不在 Kubernetes 集群内。 @jmaitrehenry,此配置文件也将在 toml 文件中吗?
  • 它的 Traefik 2+ 版本
  • @maaz 它们是 kubernetes 清单。我只是假设您使用 Traefik 作为 Kubernetes 中的入口控制器。
【解决方案2】:

如果您想从手动配置升级,您可以使用 Traefik,如 here 所述。观看他如何使用 docker 标签 来定义如何路由 HTTP 流量。 我个人在 docker 中使用caddy docker proxy(swarm,但不是必需的),我觉得它更容易理解和使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2020-02-13
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多