gpt4 book ai didi

java - 如何让 HA Proxy 自己跟随重定向?

转载 作者:可可西里 更新时间:2023-11-01 16:53:56 29 4
gpt4 key购买 nike

我有 java 客户端,它通过 HA 代理与第 3 方服务对话。 3rd 方服务最近发生了变化,所以现在它返回 302(临时移动)而不是 200(确定),这会导致我的 Java 客户端失败,因为它期望 200 有实际响应。出于多种原因,我想避免对 Java 客户端进行任何代码更改。

那么,问题来了:有没有办法让 HA Proxy 自己跟随重定向,只向客户端返回结果(而不是 3xx http 代码)?

还有一件事要提:我通过 http 访问 HA 代理,HA 代理通过 https 访问第 3 方资源,并返回 302,位置在 https 上。位置各不相同,因此无法将 HA 代理配置到新位置。

HA 代理版本:HA-Proxy 版本 1.7.5 2017/04/03

操作系统:CentOS Linux 7.2.1511 版(核心版)

最佳答案

你可以用这个

$ haproxy -v
Nuster version 1.8.8.2.2
Copyright (C) 2017-2018, Jiang Wenyuan, <koubunen AT gmail DOT com >

HA-Proxy version 1.8.8.2 2018/05/29
Copyright 2000-2018 Willy Tarreau <willy@haproxy.org>

haproxy.conf

global
debug
lua-load handle_redirect.lua

frontend web1
bind *:8080
mode http

default_backend app1

backend app1
mode http

http-response lua.handle_redirect if { status eq 301 }

server s1 127.0.0.1:9000

handle_redirect.lua

http = require("http")

core.register_action("handle_redirect", {"http-res"}, function(txn)

local hdr = txn.http:res_get_headers()
if hdr["location"] == nil then
return nil
end


local r, msg = http.get{
url = hdr["location"][0]
}

if r == nil then
return msg
end

local res = "HTTP/1.1 " .. r.status_code .. " " .. r.reason .. "\r\n"
for k, v in pairs(r.headers) do
res = res .. k .. ": " .. v .. "\r\n"
end
res = res .. "\r\n"
res = res .. r.content


txn.res:set(res)
txn.done(txn)

end)

https://github.com/haproxytech/haproxy-lua-http/blob/master/http.lua下载http.lua

haproxy -f haproxy.conf

关于java - 如何让 HA Proxy 自己跟随重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50844292/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com