2017-08-10 145 views
0

我试图模块化我在Angular-JS中的前端,我们使用HA代理作为负载均衡器和K8s。如何转义HAProxy配置中的#字符?

HA代理配置中的每个ACL都附加到K8中的不同服务,并且由于我们使用Angular(启用了hash-bang),因此在HA代理配置文件中,我们将其用作识别不同的模块。

下面是我的配置,在HA代理中失败,因为即使在遵循HA Documentation之后,我也无法逃离文件中的#号。

acl login-frontend path_beg /\#/login 
use_backend login-frontend if login-frontend 

acl elc-frontend path_beg /\#/elc 
use_backend elc-frontend if elc-frontend 

我试过把它转义为/%23/login和/'#'/ admin但没有成功。

任何想法将不胜感激。

回答

0

RFC 3986

定义与任何URI片段(一切后跟一个#字符),使用一个片段标识符组分的不 暗示的检索动作会发生。具有片段 标识符的URI可以用于指代次要资源,而不具有主要资源可访问或将永远访问 的任何暗示。

它在客户端使用,因此客户端(浏览器,curl等)不会发送请求。作为参考:Is the URL fragment identifier sent to the server?

所以没有必要使用它来路由/ acl。 haproxy为此提供转义序列的原因是您可能希望将其与正文,自定义标题一起包含它......但是,您将不会从请求行(具有URI的第一行)获取该部分。