添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

traefik 本身使用了正常的 80 443 端口。

然后分别在 web websecure entrypoint 上创建了 route

然后为 www-outer (在 web entrypoint 上)配置了重定向至 https middleware

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  annotations:
    kubernetes.io/ingress.class: ingress-traefik
  generation: 1
  labels:
    app.kubernetes.io/instance: www
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: www
    app.kubernetes.io/version: 1.0.0
  name: www-outer
  namespace: hf
spec:
  entryPoints:
  - web
  routes:
  - kind: Rule
    match: Host(`www.hftest.com`)
    middlewares:
    - name: redirect-to-https
    services:
    - kind: Service
      name: www
      namespace: hf
      passHostHeader: true
      port: 8000
      responseForwarding:
        flushInterval: 1ms
      scheme: http
      strategy: RoundRobin
      weight: 100

middleware文件

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: redirect-to-https
  namespace: hf
spec:
  redirectScheme:
    permanent: true
    scheme: https

此时访问traefik正常。

但是在与其他公司联调时,由于外网无法使用标准的80443端口,因此改用了80808443端口。

也就是说外网ip8080映射到traefik80, 8443映射到443

这时外网访问就出问题了,现象就是浏览器中打不开。

curl调试如下:

# curl -i http://www.hftest.com:8080
HTTP/1.1 301 Moved Permanently
Location: https://www.hftest.com/
Date: Fri, 16 Sep 2022 09:39:38 GMT
Content-Length: 17
Content-Type: text/plain; charset=utf-8
Moved Permanently

可以看到,traefik返回了不带端口的https链接,而这个在外网的确是访问不到的。

nginx proxy_redirect选项

nginxproxy_redirect参数可以解决这个问题。

但是现在使用的是traefikingress控制器,没用ingress-nginx

traefik是否有类似的选项呢?

RedirectScheme中的port选项

RedirectSchememiddleware是有一个port选项的,可以定义重定向后的端口。

这个我没有试,猜想,应该是可以在重定向之后带上自己设置的端口,比如8443

但是,在内网的就没法用了。当然也可以为traefik加上80808443entrypoint来支持这种情况。

还是感觉不太优雅。

使用RedirectRegexmiddleware

这个middleware可以支持正则来进行重定向操作,相对RedirectScheme仅能重定向scheme,相对作用更广泛。

使用两个RedirectRegexmiddleware即可解决上面的问题。

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: redirect-8080-to-8443
spec:
  redirectRegex:
    regex: ^http://www.hftest.com:8080/(.*)
    replacement: https://www.hftest.com:8443/${1}
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: redirect-http-to-https-by-regex
spec:
  redirectRegex:
    regex: ^http://www.hftest.com/(.*)
    replacement: https://www.hftest.com/${1}

如果觉得在ingressroute中写两个middleware麻烦,还可以使用chain将这两个整合到一起,然后写一个即可。

这样就可以解决从外网访问时,因外网使用了与traefik不同端口带来的重定向问题了。

一文搞懂 Traefik2.1 的使用核心概念安装ACME中间件灰度发布流量复制TCP简单 TCP 服务带 TLS 证书的 TCP Traefik 是一个开源的可以使服务发布变得轻松有趣的边缘路由器。它负责接收你系统的请求,然后使用合适的组件来对这些请求进行处理。 除了众多的功能之外,Traefik 的与众不同之处还在于它会自动发现适合你服务... 2. 反向代理 2.1 基本概念 EntryPoints:入口点是进入Traefik的网络入口点。它们定义了接收数据包的端口,以及是侦听TCP还是UDP。入口点是静态配置的一部分,它们可以通过使用文件(TOML或YAML)或CLI参数来定义。 Routers:路由器负责将传入的请求连接到能够处理它们的服务。在这个过程中,路由器可能会使用一些中间件来更新请求,或者在将
Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它可以支持多种后端 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。 本文为个人在学习Traefik的过程中,对Traefik相关...
使用 Nginx 容器为 Traefik 配置高性能通用错误页面 使用 Traefik 比较久的读者应该会发现,在服务重启的时候,原来的网站会展示 404 not found 的空白页面,虽然多数情况下服务恢复很快,但是这个恢复时间取决于部署启动的应用和监控检查配置策略,如果没有配置流量切换规则,那么有的时候,会看到很久的空白页面,这样的体验显然不好。 为了提升体验,我们可以使用 Traefik 提供的错误页面中间件来解决这个问题,优化访问体验。本篇思路同样可以处理通用 Nginx 错误页面的创建。 Traefik 是一个现代的 HTTP 反向代理和负载均衡器,使部署微服务变得容易。 Traefik 可以与现有的多种基础设施组件(Docker、Swarm 模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS...)集成,并自动和动态地配置自己。 系列文章: 《Traefik 系列文章》 实践中,一个很常见的需求,用户输入的 url 是 ewhisper.cn/alert-manager, 如果什么都不做会返回 404, 需要自动加斜杠变成
上一次对kubernetes配置了 traefik ,如果需要traefik代理https的应用,就需要配置https,下面就针对traefik 的https做配置 准备工作: 下面的操作在deploy节点操作,此节点同时又被定义为了我的master节点。 证书:自己生成,或使用机构颁发的证书,私签证书命令,需要有安装OpenSSL: openssl req -x509 -nodes -d... 传入请求在endpoints结束,顾名思义,它们是Traefik的网络入口点(侦听端口,SSL,流量重定向......)。 然后将流量转发到匹配的frontends。前端定义了从入口点到后端的路由。使用请求字段(主机,路径,标头...)创建路由,并且可以匹配或不匹配请求。然后,frontend将请求发送到后端。 后端可以由一个或多个server...
我们在配置nginx代理时,正常外网的映射与内网端口一致时,不会出现redirect跳转不对的情况,但如果内网监听的端口与外网监听的端口不一致时,就会产生redirect跳转不对的情况。为了解决这个问题,必须配置proxy_direct,以保持redirect时端口不一样的问题;表现为: 访问外网地址:http://221.***.***.238:2280/log...
Nginx是一个开源的高性能Web服务器,常用于反向代理、负载均衡等方面。其中,proxy_redirectNginx的一个指令,用于重定向代理请求的URL。 通常情况下,Nginx的配置文件中会有一个反向代理的设置,比如: location / { proxy_pass http://localhost:8080; 这里,Nginx会将所有访问"/"路径的请求转发到本地的8080端口。但是,如果8080端口返回的页面中有某些链接指向了自己,比如: <a href="/home">Home</a> 那么,用户点击这个链接后,会发现URL变成了"localhost:8080/home",这显然不是我们期望的结果。 这时候,就可以使用proxy_redirect指令进行重定向,比如: location / { proxy_pass http://localhost:8080; proxy_redirect off; 这样,在8080端口返回的页面中,所有的链接都会被重定向到Nginx服务器,而不是直接访问8080端口。如果8080端口返回的页面中有类似"<a href="/home">Home</a>"的链接,那么用户点击后,URL就会变成"localhost/home",这就达到了我们的目的。 除了这种基本用法,proxy_redirect还支持一些高级设置,比如通过正则表达式匹配URL等。在使用时,需要根据实际情况进行配置。