我让HAproxy运行在一个Kubernetes容器中。这就是样例日志的样子。
<134>Jul 20 13:11:37 haproxy[6]: <SOURCE_ADDRESS> [20/Jul/2020:13:11:37.713] front gameApi/game-api-test 0/0/0/9/9 200 384 - - ---- 37/37/0/0/0 0/0 {<FORWARD_FOR_ADDRESS>} "GET /api/games/lists?dtype=brandlist HTTP/1.1"这里的是haproxy kubernetes节点ip地址,我需要它作为ip地址的clinet/forwardfor地址,从而能够正确地解析地理位置。
编辑:
我找到了一个使用haproxy的解决方案,就是简单地设置http-request set-src hdr(x-forwarded-for)
然而,尝试使用解决方案externalTrafficPolicy: Local似乎破坏了我为网站服务的能力。当我试图访问一个网站时,它会说“这个网站无法到达”或“安全连接失败”。
haproxy服务
apiVersion: v1
kind: Service
metadata:
name: haproxy-test
labels:
app: haproxy-test
namespace: test
annotations:
# Note that the backend talks over HTTP.
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-sload-balancer-ssl-cert: arn:aws:acm:us-east-2:redacted:certificate/redacted
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
spec:
type: LoadBalancer
externalTrafficPolicy: Local
ports:
- port: 80
name: http
targetPort: 80
protocol: "TCP"
- port: 443
name: https
targetPort: 80
protocol: "TCP"
selector:
app: haproxy-test
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: haproxy-test
namespace: test
spec:
replicas: 1
template:
metadata:
labels:
app: haproxy-test
spec:
containers:
- name: haproxy-test
image: <redacted>.dkr.ecr.us-east-2.amazonaws.com/haproxy:$TAG
imagePullPolicy: Always
ports:
- containerPort: 80
resources:
limits:
cpu: "50m"
requests:
cpu: "25m"发布于 2020-07-20 13:25:48
通过将externalTrafficPolicy设置为local,可以保留源IP。查看此问题以获得更多详细信息( How do Kubernetes NodePort services with Service.spec.externalTrafficPolicy=Local route traffic? )
或者,使用http-request set-src hdr(x-forwarded-for)配置HAProxy以使用X-Forward-For报头的内容来建立请求源地址的内部概念,而不是启动入站连接的实际IP地址。
https://stackoverflow.com/questions/62996316
复制相似问题