HAProxy入口控制器不会重写响应页面的URL

时间:2019-12-05 17:36:10

标签: kubernetes url-rewriting haproxy haproxy-ingress

我最近正在评估HAProxy入口控制器作为后端服务的负载平衡器,并附带以下介绍:https://github.com/jcmoraisjr/haproxy-ingress。入口控制器能够重定向请求以更正后端服务,但它不能过滤响应页面以重写url以匹配外部方面。

我有一个名为'report'的服务,它在http://internal-ip:5000上运行,其入口配置为:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: report-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /report
            backend:
              serviceName: report-service
              servicePort: 5000

HAProxy入口控制器正确找到了该服务并生成配置:

frontend httpfront-default-backend
    ...
    reqrep ^([^\ :]*)\ /report/?(.*$) \1\ /\2 if from-https  { var(txn.path) -m beg /report }
    ...

但是默认的返回页面(/)包含一段JavaScript,如下所示:

__upload_file = (data_file) => {
    const formData = new FormData();
    formData.append('file', data_file)
    return fetch('/upload', {
        method: 'POST',
        body: formData
    }).then(response => {
        ...
    })

您看到fetch命令具有/upload URL参数,应该将其更改为/report/upload,但没有。因为HAProxy配置是由入口控制器本身维护的,所以我们只能从kubernetes入口配置中感染它,但是我不知道该怎么做才能使其工作。有没有人可以提供想法?谢谢。

0 个答案:

没有答案