将路径附加到主机 HAPROXY
Appending Path to Host HAPROXY
我是 haproxy 的新手(实际上是一般的代理),我不知道如何向我的后端添加路径。我的后端定义为:
服务器 server1 ns.foo.com:7170 检查
我想添加 /web 以便将请求定向到 https://ns.foo.com:7170/web。
谢谢,
马克
你需要的是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
如果您想将来自给定端口的请求发送到特定路径,
您可以通过使用 set-path 操作指定 http 请求规则在前端或后端配置中修改请求
例如,如果您想向 /web 发送任何请求,那么您应该写
http-request set-path /web
进入你的后端配置
否则,如果您想在传入请求路径前加上 /web
(例如
本地主机:[端口]/somepath
应该去
serverhost:[serverport]/web/somepath) 如 Mawardy 所问。
那么你也应该像这样使用 %[path] 变量
http-request set-path /web/%[path]
我已经在 docker 中创建了 spring 服务器 运行 2 个实例的概念证明
在 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
我是 haproxy 的新手(实际上是一般的代理),我不知道如何向我的后端添加路径。我的后端定义为:
服务器 server1 ns.foo.com:7170 检查
我想添加 /web 以便将请求定向到 https://ns.foo.com:7170/web。
谢谢, 马克
你需要的是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
如果您想将来自给定端口的请求发送到特定路径, 您可以通过使用 set-path 操作指定 http 请求规则在前端或后端配置中修改请求
例如,如果您想向 /web 发送任何请求,那么您应该写
http-request set-path /web
进入你的后端配置
否则,如果您想在传入请求路径前加上 /web
(例如
本地主机:[端口]/somepath
应该去
serverhost:[serverport]/web/somepath) 如 Mawardy 所问。
那么你也应该像这样使用 %[path] 变量
http-request set-path /web/%[path]
我已经在 docker 中创建了 spring 服务器 运行 2 个实例的概念证明 在 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