我是haproxy的新手(实际上通常是代理),我无法弄清楚如何为我的后端添加路径。我的后端定义为:
服务器server1 ns.foo.com:7170检查
我想添加/ web,以便将请求定向到https://ns.foo.com:7170/web。
谢谢, 标记
答案 0 :(得分:0)
您需要的是HTTP重写 https://www.haproxy.com/doc/aloha/7.0/haproxy/http_rewriting.html#rewriting-http-urls
将此添加到后端可以解决您的问题:
acl p_root path -i /
http-request set-path /web if p_root
答案 1 :(得分:0)
如果您希望将来自给定端口的请求发送到特定路径, 您可以使用set-path操作指定http-request规则,从而在前端或后端配置中修改请求
例如,如果您要将任何请求发送到/ web,则应写
http-request set-path /web
进入您的后端配置
否则,如果您想在传入请求路径前添加/ web
(例如
本地主机:[端口] / somepath
应该去
服务器主机:[服务器端口] / web / somepath),按Mawardy的要求。
然后,您还应该使用%[path]变量
http-request set-path /web/%[path]
我创建了一个在docker中运行2个实例的spring服务器的概念证明 使用docker中的HA代理进行负载平衡的对象,该代理还根据哪个服务器赢得了负载平衡来修改路径。 为此,将ha代理配置为在其自己的前端之间进行负载平衡,这些前端具有自己的后端以及经过修改的路径
配置看起来像这样
defaults
retries 3
maxconn 20
timeout connect 5s
timeout client 6s
timeout server 6s
frontend http-in
bind *:9002
mode http
use_backend proxy-backend
backend proxy-backend
balance roundrobin
mode http
option forwardfor
http-response set-header X-Forwarded-Port %[dst_port]
http-response set-header X-ProxyServer %s
server proxy-server-1 localhost:9000
server proxy-server-2 localhost:9001
frontend proxy-in1
bind *:9000
mode http
use_backend poc-server2
frontend http-in2
bind *:9001
mode http
use_backend poc-server1
backend poc-server1
mode http
http-response set-header X-Server %s
http-request set-path /api/one/%[path]
server poc-server-1 proxypochost1:9000
backend poc-server2
mode http
http-response set-header X-Server %s
http-request set-path /api/two/%[path]
server poc-server-2 proxypochost2:9001
有关更多信息,您可以在此处查看其自述文件中的其他信息:ha-proxy-poc