Docker Traefik-角度应用程序后端的代理
我已经用Nginx设置了一个代理,如下所示Docker Traefik-角度应用程序后端的代理,docker,nginx,proxy,traefik,Docker,Nginx,Proxy,Traefik,我已经用Nginx设置了一个代理,如下所示 server { listen 80; server_name localhost; location /api { proxy_pass https://api.mydomain.com/; } location / { root /usr/share/nginx/html; index ind
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。观察他如何使用docker标签来定义如何路由HTTP流量。
我个人使用docker(swarm,但不是必需的),我发现它更容易理解和使用Traefik 2+,您需要配置2个路由器: -一个用于API -一个用于webapp 对于API代理,您将有如下规则:
rule = "Host(`example.com`) && Path(`/api`)"
而webapp通常只会拥有主机
rule = "Host(`example.com`)"
对于kubernetes,您可以在这样的入口中执行此操作:
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
---
apiVersion: v1
kind: Service
metadata:
name: myapi-svc
namespace: default
spec:
externalName: api.mydomain.com
type: ExternalName
如果API不在kubernetes集群内,则可以使用如下外部服务定义规则:
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
---
apiVersion: v1
kind: Service
metadata:
name: myapi-svc
namespace: default
spec:
externalName: api.mydomain.com
type: ExternalName
对于traefik,您在Kubernetes集群中使用它吗?如何配置Traefik?使用静态文件?或者通过其他方式?我在Kubernetes集群中使用它。好的,它是traefik版本1、7或2+(traefik在2.0版本的配置中改变了很多东西)它的traefik 2+API不在Kubernetes集群中@jmaitrehenry,这个配置文件也将在toml文件中,对吗?它的Traefik 2+version@maaz他们是库伯内特人。我只是假设你在库伯内特斯使用特拉菲克作为入口控制器。