自定义 URL 在 L7 访问配置文件中用作 URL 筛选和上下文配置文件的属性类型。
NSX 允许用户配置包含特殊字符的完整域或部分域或 URL。下图描述了 URL(统一资源定位器)的不同元素。
NSX 支持以下自定义 URL 模式:
- 仅支持 IANA 注册的顶级域 (TLD) 以及通配符 * 和 ^。
- 输入的 URL 应为有效的 URL。例如,www...google+com 将被拒绝。
- 请勿包含 http://、https://、ftp:// 等。
- 用户必须输入域名,但也可以选择包含 URI。例如,google.com 和 google.com/news 有效,但 /news 是无效输入。
- URI 不得包含查询参数。例如,www./google.com/query?keyboard=news 将被拒绝。
- 特殊字符 * 和 ^ 可在域名和 URI 路径中用于通配符匹配。* 将匹配一个或多个单词,而 ^ 将与一个单词完全匹配。例如,*.google.com 将匹配 news.google.com,还会匹配 local.news.google.com。不过,^ 仅匹配 news.google.com,但与 local.news.google.com 不匹配。同样,google.com/* 将匹配 google.com/news 以及 google.com/news/sanjose。但是,google.com/^ 仅匹配 google.com/news,但不匹配 google.com/news/sanjose。
- * 和 ^ 仅匹配完整单词,不能用于匹配部分单词。例如,不能使用 *google.com 来匹配 mygoogle.com。但是,可以使用 *.google.com 来匹配 my.google.com。同样,google.com/*news 和 google.com/n* 无效,将被拒绝。
- * 和 ^ 可以在 URL 中出现多次。例如,*.google.* 和 *.google.com/^/news/* 有效。
- 由于 ^ 只匹配一个单词,因此允许连着出现两个 ^。例如,^.^.google.com 有效,与 local.news.google.com 匹配,但与 my.local.news.google.com 或 news.google.com 不匹配。同样,google.com/^/^ 有效,与 google.com/news/sanjose 匹配,但与 google.com/news 或 google.com/news/sanjose/today 不匹配。
- 仅输入域名(不使用 URI)时,用户可以输入末尾带或不带 / 的域名,它们的行为不同。如果用户输入的域名末尾没有 /,则会将其视为部分匹配。例如,*.google.com 将匹配 news.google.com、news.google.com.us、news.google.com.us/、news.google.com.us/local 等。如果用户输入的域名末尾带 /,则会将其视为完全匹配。例如,*.google.com/ 将匹配 news.google.com 和 news.google.com/,但与 news.google.com.us 或 news.google.com/local 不匹配。
- 如果输入的 URL 包含路径,则不会对末尾出现的 / 进行任何特殊对待,而将此 URL 视为完全匹配。例如,google.com/news/ 将仅匹配 google.com/news/,但与 google.com/news、google.com/newslatest 或 google.com/news/latest 不匹配。
- URL 匹配可用于匹配 HTTP URL(主机标头 + URI)或 TLS SNI。如果用户指定的 URL 具有路径,则该路径将与 TLS SNI 不匹配。但是,如果启用了 TLS 检查并解密了流量,则可以使用内部 HTTP URL 将 URL 与路径相匹配。例如,*.google.com 和 *.google.com/ 可以匹配 HTTP URL 或 TLS SNI(不使用 TLS 检查),但 *.google.com/news 将不匹配 TLS SNI(不使用 TLS 检查)。
示例
用户输入 | 示例 |
---|---|
espn.com | 匹配:espn.com、espn.com/、espn.com.us、espn.com.us/、espn.com/sports 和 espn.com.us/sports/p 不匹配:premium.espn.com |
espn.com/ | 匹配:espn.com、espn.com/ 不匹配:premium.espn.com、espn.com.us、espn.com.us/、espn.com/sports、espn.com.us/sports/ |
espn.com/sports | 匹配:espn.com/sports 不匹配:espn.com/sportsnba、esp.com/sports/、espn.com/sports/nba |
espn.com/sports/ | 匹配:espn.com/sports 不匹配:esp.com/sports、espn.com/sports/nba |
*espn.com | 匹配:premium.espn.com、replay.preimum.espn.com、instant.replay.premium.espn.com、premium.espn.com/、premium.espn.com.us、premium.espn.com.us/、premium.espn.com/sports、premium.espn.com.us/sports 不匹配:espn.com.espn.com |
*.espn.* | 匹配:www.espn.com、premium.espn.com、www.espn.us、premium.espn.com.us/、latest.espn.com/sports、www.espn.com.us/sports/、replay.premium.espn.com、instant.replay.premium.espn.com、instant.replay.premium.espn.com.us/ 不匹配:espn.com、www.espn.com |
espn.*.us/ | 匹配:espn.news.us、espn.news.us/、espn.local.news.us 不匹配:espn.us、www.espn.us、espn.news.us/sports |
*.espn.*/* | 匹配:www.espn.com/sports、replay.premium.espn.com.us/sports/nba/ 不匹配:www.espn.com、www.espn.com/ |
^.espn.com | 匹配:www.espn.com、www.espn.com/、www.espn.com/sports、www.espn.com.us/ 不匹配:espn.com、news.local.espn.com |
^.espn.^ | 匹配:www.espn.com、www.espn.com/、www.espn.com.us、www.espn.com.us/sports 不匹配:news.local.espn.com、www.espn.com.us |
espn.^/ | 匹配:espn.com、espn.com/ 不匹配:espn.com.us、espn.com/sports |
www.^.^.com/^/^ | 匹配 www.local.espn.com/sports/nba 与 www.personal.local.espn.com/sports/nba 和 www.local.espn.com/sports/nba/ 不匹配 |