我使用 HAPROXY 容器作为虚拟 HPC 集群的入口点。根据前缀,请求被转发到不同的容器。
:80/foswiki/ -> :80/foswiki/ :80/kibana/ -> :80/kibana/ :80/graphite-api/ -> :80/graphite-api/ ...
我使用的配置非常简单:
前端http-in
绑定 *:80
acl uri_foswiki path_beg /foswiki
use_backend srv_foswiki 如果 uri_foswiki
# GitLab
default_backend srv_gitlab
后端 srv_foswiki
平衡循环
cookie SERVERID 插入
选项 httpclose
选项转发
服务器 foswiki 172.17.0.3:80 cookie
问题是有网络服务器直接以 root 身份为网站提供服务,没有前缀。'Graphite-web',例如或 gitlab 图像。
我尝试削减前缀并进一步转发它,但我真正想要的是 haproxy 将前缀保留在路径中,并且它对后端服务器是透明的。如果我点击“gitlab_server:80/dashboard/”,它应该显示为“frontend_ip:80/gitlab/dashboard”。
后端 srv_gitlab
平衡循环
#cookie SERVERID 插入
模式http
reqrep ^([^\ ]*)\ /gitlab/(.*) \1\ /\2
平衡循环
选项转发
服务器 gitlab 172.17.0.18:80 cookie
我不认为这是一件很难的事情,但在我看来,我的谷歌技能有点残废。每次我最终都会重写不保留前缀的规则。
任何人?基督教
编辑:用户无法访问内部 IP 地址...
要摆脱 URI 的前导部分,请尝试
reqrep ^(GET|POST)\ /gitlab/(.*) \1\ /\2
Run Code Online (Sandbox Code Playgroud)
即,将HTTP methodinto\1和 gitlab 根目录后面的路径提取到 into \2,然后将它们连接到完整的请求。
请注意,这对于许多应用程序来说可能不会减少,因为应用程序服务器不知道客户端应该从虚拟gitlab/根目录中请求所有内容。因此,重定向显然会“剥离”重要的根目录。
这种情况可以更容易地解决,例如使用nginx它的mod_proxy甚至 Apache。
| 归档时间: |
|
| 查看次数: |
3411 次 |
| 最近记录: |