如何配置Traefik转发请求至指定主机并覆盖IP?
解决Traefik转发特定请求至旧Apache服务器的配置问题
我来帮你搞定这个过渡阶段的Traefik配置问题!从你的描述来看,你正处在从旧Apache服务器迁移的过程中,需要让Traefik把attie.co.uk(包括带www前缀的请求)转发到原Apache服务器,不过现有配置里有个关键问题需要修正。
现有配置的核心问题
你当前的backend配置用了url = "http://attie.co.uk:80",但外部DNS已经把attie.co.uk指向了Traefik所在的服务器,这会导致Traefik尝试请求自身,形成循环请求,根本无法转发到旧Apache服务器。
修正后的完整配置
你需要把backend的目标地址改成旧Apache服务器的内网IP地址或者内部可访问的主机名,比如旧服务器内网IP是192.168.1.50,配置应该改成这样:
[frontends.attie] backend = "attie" [frontends.attie.routes._] rule = "HostRegexp: {host:^(www\\.)?attie\\.co\\.uk}" [backends.attie.servers._] url = "http://192.168.1.50:80" # 这里换成旧Apache服务器的实际内网地址
关键配置说明
- Frontend规则:你的
HostRegexp规则是没问题的,它能匹配attie.co.uk和www.attie.co.uk这两种域名的请求。 - Backend目标地址:必须使用旧服务器的内网IP/内部主机名,避免DNS解析到Traefik服务器导致循环。同时要确保Traefik服务器能访问到这个内网地址,旧服务器的防火墙要允许Traefik所在机器的80端口请求。
验证方法
配置更新后,重启Traefik服务,然后可以用curl命令测试转发是否正常:
curl -H "Host: attie.co.uk" http://<你的Traefik服务器IP>
如果返回的是旧Apache服务器上的站点内容,就说明配置生效了。
内容的提问来源于stack exchange,提问作者Attie
相关产品推荐
相关产品推荐

