gpt4 book ai didi

linux - HAproxy 子目录

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:52 26 4
gpt4 key购买 nike

我一直在互联网深处搜索,试图让 HAProxy 正常运行,但我不确定它能否完成我想要的。

我试着按照这个:https://www.haproxy.com/blog/howto-write-apache-proxypass-rules-in-haproxy/

这是我的场景:我有一个在端口 8999 上运行 app1 的虚拟机。当我转到 https://PUBLIC-IP-ADDRESS/app1 时,HAProxy 应该启动位于 http://backend-ip:8999/ 的 app1。

我面临的问题是我可以让 HAProxy 代理初始连接,但所有后续请求都会转到默认后端服务器的根目录。

frontend www-https 
bind *:8989 ssl crt /ssl/server.pem
log global
option httplog
reqadd X-Forwarded-Proto:\ https
rspadd Strict-Transport-Security:\ max-age=31536000;\ includeSubDomains
acl app1 path_beg -i /app1 /app1/
use_backend www-app1 if app1
default_backend www-backend

backend app1
option http-server-close
option forwardfor
reqirep [\:])\ /app1/(.) \1\ /\2
acl hdr_location res.hdr(Location) -m found
rspirep Location:\ (https?://Public-IP-ADDRESS(:[0-9]+)?)?(/.*) Location:\ /app1\3 if hdr_location
server app1 bk.IP-ADDRESS:8999 check

现在可以转到 /app1/,但所有链接都指向 /。因此,点击任意位置可返回 https://PUBLIC-IP-ADDRESS

非常感谢任何帮助。

最佳答案

resirep仅允许修改标题和请求行。

它是新版本 1.6+,可能(以有限的方式) 使用 lua 脚本……但目前没有通用(成功)的解决方案(引用 http://www.serverphorums.com/read.php?10,1322511) .

https://serverfault.com/questions/789743/possibility-of-rewriting-response-bodies-in-different-webservers-nginx-apache中的答案似乎是最新的。

还有官方邮件列表 - https://www.mail-archive.com/haproxy@formilux.org/msg25215.html , 不留任何幻想。

此外,还有许多陷阱 - 许多正则表达式(或一个非常复杂的)来处理所有相对(包括 ../)和绝对变化。

无需重写的解决方案:

  1. 在/app1 上提供应用程序 - 如果您可以控制它
  2. 有点像上面-设置<base>基于来自 haproxy 的一些 header (x-forwarded-path?)
  3. 放弃 /app1路径和使用子域(我会选择这个)

关于linux - HAproxy 子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854804/

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