HAProxy 有一个这样的配置草案:
defaults
log global
mode http
timeout connect 5000
timeout client 5000
timeout server 5000
frontend main
bind *:80
acl is_redmine path_beg /redmine
use_backend redmine_back if is_redmine
backend redmine_back
server redmine_server redmine:3000
如何将请求转发到 redmine(它是一个容器)并使用此路径“ some_adress/redmine/login ”获得响应?
现在 redmine 与“redmine”一词一起抛出请求。一个用于理解的日志示例,redmine 不处理0.0.0.0:3000/redmine:
redmine_1 | [2021-06-11 18:35:05] INFO WEBrick 1.6.1
redmine_1 | [2021-06-11 18:35:05] INFO ruby 2.7.3 (2021-04-05) [x86_64-linux]
redmine_1 | [2021-06-11 18:35:05] INFO WEBrick::HTTPServer#start: pid=1 port=3000
redmine_1 | 172.18.0.4 - - [11/Jun/2021:18:35:11 UTC] "GET /redmine HTTP/1.1" 404 459
redmine_1 | - -> /redmine
我想在没有红包的情况下向他提出请求。
有没有人有一个工作配置的例子或在哪里阅读?
提前致谢。
更新 1
此解决方案有所帮助,但产生了一个新问题:
http-request set-path "%[path,regsub(^/redmine,/,i)]"
响应后,页面尝试加载静态内容,但没有redmine path ,即 http://some_addres/stylesheets/jquery/jquery-ui-1.12.1.css?1619448608
,
但我想要http://some_addres/
redmine /stylesheets/jquery/jquery-ui-1.12.1.css?1619448608
更新 2
我进行了重定向并且它起作用了,但它当然是错误的。这是一个配置示例,确切需要这样做的 mb,但我不推荐它:
frontend main
bind *:80
acl is_redmine path_beg -i /redmine
acl is_redmine_referer hdr(Referer) -i -m sub /redmine
http-request redirect location http://%[req.hdr(host)]/redmine%[path]?%[query] if !is_redmine is_redmine_referer
use_backend redmine_back if is_redmine
use_backend redmine_back if is_redmine_referer
backend redmine_back
http-request set-path "%[path,regsub(^/redmine,/,i)]"
server redmine_server redmine:3000