diff --git a/EdgeAPI/internal/clickhouse/logs_ingest_store.go b/EdgeAPI/internal/clickhouse/logs_ingest_store.go index 047bd1d..7c2359a 100644 --- a/EdgeAPI/internal/clickhouse/logs_ingest_store.go +++ b/EdgeAPI/internal/clickhouse/logs_ingest_store.go @@ -126,6 +126,9 @@ func (s *LogsIngestStore) List(ctx context.Context, f ListFilter) (rows []*LogsI if f.HasFirewallPolicy { conditions = append(conditions, "firewall_policy_id > 0") } + if f.HasError { + conditions = append(conditions, "status >= 400") + } if f.FirewallPolicyId > 0 { conditions = append(conditions, "firewall_policy_id = "+strconv.FormatInt(f.FirewallPolicyId, 10)) } diff --git a/EdgeAPI/internal/rpc/services/service_http_access_log.go b/EdgeAPI/internal/rpc/services/service_http_access_log.go index 7c5af2b..ce26818 100644 --- a/EdgeAPI/internal/rpc/services/service_http_access_log.go +++ b/EdgeAPI/internal/rpc/services/service_http_access_log.go @@ -67,14 +67,33 @@ func (this *HTTPAccessLogService) ListHTTPAccessLogs(ctx context.Context, req *p } store := clickhouse.NewLogsIngestStore() - if store.Client().IsConfigured() && req.Day != "" { + canReadFromClickHouse := this.shouldReadAccessLogsFromClickHouse() && store.Client().IsConfigured() && req.Day != "" + canReadFromMySQL := this.shouldReadAccessLogsFromMySQL() + if canReadFromClickHouse { resp, listErr := this.listHTTPAccessLogsFromClickHouse(ctx, tx, store, req, userId) - if listErr != nil { - return nil, listErr - } - if resp != nil { + if listErr == nil && resp != nil { return resp, nil } + if !canReadFromMySQL { + if listErr != nil { + return nil, listErr + } + return &pb.ListHTTPAccessLogsResponse{ + HttpAccessLogs: []*pb.HTTPAccessLog{}, + AccessLogs: []*pb.HTTPAccessLog{}, + HasMore: false, + RequestId: "", + }, nil + } + } + + if !canReadFromMySQL { + return &pb.ListHTTPAccessLogsResponse{ + HttpAccessLogs: []*pb.HTTPAccessLog{}, + AccessLogs: []*pb.HTTPAccessLog{}, + HasMore: false, + RequestId: "", + }, nil } accessLogs, requestId, hasMore, err := models.SharedHTTPAccessLogDAO.ListAccessLogs(tx, req.Partition, req.RequestId, req.Size, req.Day, req.HourFrom, req.HourTo, req.NodeClusterId, req.NodeId, req.ServerId, req.Reverse, req.HasError, req.FirewallPolicyId, req.FirewallRuleGroupId, req.FirewallRuleSetId, req.HasFirewallPolicy, req.UserId, req.Keyword, req.Ip, req.Domain) @@ -241,12 +260,15 @@ func (this *HTTPAccessLogService) FindHTTPAccessLog(ctx context.Context, req *pb // 优先从 ClickHouse 查询 store := clickhouse.NewLogsIngestStore() - if store.Client().IsConfigured() { + canReadFromClickHouse := this.shouldReadAccessLogsFromClickHouse() && store.Client().IsConfigured() + canReadFromMySQL := this.shouldReadAccessLogsFromMySQL() + if canReadFromClickHouse { row, err := store.FindByTraceId(ctx, req.RequestId) if err != nil { - return nil, err - } - if row != nil { + if !canReadFromMySQL { + return nil, err + } + } else if row != nil { // 检查权限 if userId > 0 { var tx = this.NullTx() @@ -260,6 +282,10 @@ func (this *HTTPAccessLogService) FindHTTPAccessLog(ctx context.Context, req *pb } } + if !canReadFromMySQL { + return &pb.FindHTTPAccessLogResponse{HttpAccessLog: nil}, nil + } + // 如果 ClickHouse 未配置或未找到,则回退到 MySQL var tx = this.NullTx() diff --git a/EdgeAPI/internal/rpc/services/service_http_access_log_ext.go b/EdgeAPI/internal/rpc/services/service_http_access_log_ext.go index b89ca10..55347d0 100644 --- a/EdgeAPI/internal/rpc/services/service_http_access_log_ext.go +++ b/EdgeAPI/internal/rpc/services/service_http_access_log_ext.go @@ -9,6 +9,14 @@ func (this *HTTPAccessLogService) canWriteAccessLogsToDB() bool { return true } +func (this *HTTPAccessLogService) shouldReadAccessLogsFromClickHouse() bool { + return true +} + +func (this *HTTPAccessLogService) shouldReadAccessLogsFromMySQL() bool { + return true +} + func (this *HTTPAccessLogService) writeAccessLogsToPolicy(pbAccessLogs []*pb.HTTPAccessLog) error { return nil } diff --git a/EdgeAPI/internal/rpc/services/service_http_access_log_ext_plus.go b/EdgeAPI/internal/rpc/services/service_http_access_log_ext_plus.go index 1f6ade6..5ef73ac 100644 --- a/EdgeAPI/internal/rpc/services/service_http_access_log_ext_plus.go +++ b/EdgeAPI/internal/rpc/services/service_http_access_log_ext_plus.go @@ -11,7 +11,15 @@ import ( ) func (this *HTTPAccessLogService) canWriteAccessLogsToDB() bool { - return false + return accesslogs.SharedStorageManager.WriteMySQL() +} + +func (this *HTTPAccessLogService) shouldReadAccessLogsFromClickHouse() bool { + return accesslogs.SharedStorageManager.WriteClickHouse() +} + +func (this *HTTPAccessLogService) shouldReadAccessLogsFromMySQL() bool { + return accesslogs.SharedStorageManager.WriteMySQL() } func (this *HTTPAccessLogService) writeAccessLogsToPolicy(pbAccessLogs []*pb.HTTPAccessLog) error { diff --git a/EdgeAdmin/web/public/js/components.js b/EdgeAdmin/web/public/js/components.js index d0e0799..99daa3f 100644 --- a/EdgeAdmin/web/public/js/components.js +++ b/EdgeAdmin/web/public/js/components.js @@ -1,3 +1,4691 @@ +// TODO 支持关键词搜索 +// TODO 改成弹窗选择 +Vue.component("admin-selector", { + props: ["v-admin-id"], + mounted: function () { + let that = this + Tea.action("/admins/options") + .post() + .success(function (resp) { + that.admins = resp.data.admins + }) + }, + data: function () { + let adminId = this.vAdminId + if (adminId == null) { + adminId = 0 + } + return { + admins: [], + adminId: adminId + } + }, + template: `
| 对象类型 | +网站 | +||||
| 网站列表 | +
+ 加载中...
+ 暂时还没有可选的网站。
+
|
+
| 主集群 | +
+
+
+
+
+ 多个集群配置有冲突时,优先使用主集群配置。 + |
+
| 从集群 | +
+
+
+
+
+ |
+
功能说明:此功能为试验性质,目前仅能防御简单的DDoS攻击,试验期间建议仅在被攻击时启用,仅支持已安装
| 启用DDoS防护 | +
+ |
+
| 单节点TCP最大连接数 | +
+ 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 + |
+
| 单IP TCP最大连接数 | +
+ 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 + |
+
| 单IP TCP新连接速率(分钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| 单IP TCP新连接速率(秒钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| TCP端口列表 | +
+ 在这些端口上使用当前配置。默认为80和443两个端口。 + |
+
| IP白名单 | +
+ 在白名单中的IP不受当前设置的限制。 + |
+
| 启用健康检查 | +
+
+
+
+
+ 通过访问节点上的网站URL来确定节点是否健康。 + |
+ ||||||||
| 检测URL * | +
+
+
+
拼接后的检测URL: |
+ ||||||||
| 检测时间间隔 | +
+ 两次检查之间的间隔。 + |
+ ||||||||
| 自动上/下线IP | +
+
+
+
+
+ 选中后系统会根据健康检查的结果自动标记节点IP节点的上线/下线状态,并可能自动同步DNS设置。注意:免费版的只能整体上下线整个节点,商业版的可以下线单个IP。 + |
+ ||||||||
| 连续上线次数 | +
+
+ 连续{{healthCheck.countUp}}次检查成功后自动恢复上线。 + |
+ ||||||||
| 连续下线次数 | +
+
+ 连续{{healthCheck.countDown}}次检查失败后自动下线。 + |
+ ||||||||
| 允许的状态码 | +
+ 允许检测URL返回的状态码列表。 + |
+ ||||||||
| 超时时间 | +
+ 读取检测URL超时时间。 + |
+ ||||||||
| 连续尝试次数 | +
+
+ 如果读取检测URL失败后需要再次尝试的次数。 + |
+ ||||||||
| 每次尝试间隔 | +
+ 如果读取检测URL失败后再次尝试时的间隔时间。 + |
+ ||||||||
| 终端信息(User-Agent) | +
+
+ 发送到服务器的User-Agent值,不填写表示使用默认值。 + |
+ ||||||||
| 只基础请求 | +
+ 只做基础的请求,不处理反向代理(不检查源站)、WAF等。 + |
+ ||||||||
| 记录访问日志 | +
+ 记录健康检查的访问日志。 + |
+ ||||||||
[{{log.createdTime}}][{{log.createdTime}}]+[{{log.tag}}]{{log.description}} 共{{log.count}}条 {{log.server.name}}
{{message}}
| 使用的DNS解析库 | +
+
+ 边缘节点使用的DNS解析库。修改此项配置后,需要重启节点进程才会生效。 |
+
|
+
+
+
+
+ |
+ IP | +类型 | +级别 | +过期时间 | +备注 | +操作 | +
|---|---|---|---|---|---|---|
|
+
+
+
+
+ |
+
+
+
+ {{item.region}}
+ | {{item.isp}}
+
+ {{item.isp}}
+
+
+ 添加于 {{item.createdTime}}
+
+ @
+
+ [黑白灰名单:{{item.list.name}}]
+ [黑白灰名单:{{item.list.name}}
+
+
+
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+
+
+ [策略:{{item.policy.name}}]
+
+
+
+
+
+ |
+ + IPv4 + IPv4 + IPv6 + 所有IP + | ++ {{item.eventLevelName}} + - + | +
+
+ {{item.expiredTime}}
+
+ 不过期
+
+ 已过期
+
+
+ {{formatSeconds(item.lifeSeconds)}}
+ 已过期
+
+ |
+ + {{item.reason}} + - + + + + + | ++ 日志 + 修改 + 删除 + | +
功能说明:此功能为试验性质,目前仅能防御简单的DDoS攻击,试验期间建议仅在被攻击时启用,仅支持已安装
| 启用DDoS防护 | -
- |
-
| 单节点TCP最大连接数 | -
- 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 - |
-
| 单IP TCP最大连接数 | -
- 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 - |
-
| 单IP TCP新连接速率(分钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| 单IP TCP新连接速率(秒钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| TCP端口列表 | -
- 在这些端口上使用当前配置。默认为80和443两个端口。 - |
-
| IP白名单 | -
- 在白名单中的IP不受当前设置的限制。 - |
-
| 主集群 | -
-
-
-
-
- 多个集群配置有冲突时,优先使用主集群配置。 - |
-
| 从集群 | -
-
-
-
-
- |
-
| 阈值 | +动作 | +||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
{{currentAction.description}}
+ +接收通知的URL。
+| 参数 | +
+
+ {{param.description}} + |
+
| 操作符 | ++ + | +
| {{param.valueName}} | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %
+
+
+
+
+
+
+
+ %
+
+
+
+
+
+
+
+
+
+
+ /秒
+
+ |
+
| 启用 | +
+ |
+
| 只记录失败查询 | +
+ 选中后,表示只记录查询失败的日志。 + |
+
| 包含未添加的域名 | +
+ 选中后,表示日志中包含对没有在系统里创建的域名访问。 + |
+
| 记录名 | +记录类型 | +线路 | +记录值 | +TTL | +操作 | +
|---|---|---|---|---|---|
| + + | ++ + | +
+ |
+ + + | +
+
+
+ 秒
+
+ |
+ + + | +
| 启用 | +
+ |
+
| 单节点TCP最大连接数 | +
+ 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 + |
+
| 单IP TCP最大连接数 | +
+ 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 + |
+
| 单IP TCP新连接速率(分钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| 单IP TCP新连接速率(秒钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| TCP端口列表 | +
+ 在这些端口上使用当前配置。默认为53端口。 + |
+
| IP白名单 | +
+ 在白名单中的IP不受当前设置的限制。 + |
+
| 选择类型 * | +启用当前记录健康检查 |
-
+ |
+
| 检测端口 | +
+
+ 默认{{parentConfig.port}}
+ [修改]
+
+
+
+ [使用默认]
+
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
|
| 选择线路 * | +超时时间 |
-
+
+ 默认{{parentConfig.timeoutSeconds}}秒
+ [修改]
+
+
+
+ [使用默认]
+
+
+
+ 秒
+
+ |
| 选择省/州 | +||
| 默认连续上线次数 | - + + 默认{{parentConfig.countUp}}次 + [修改] + + |
| 启用健康检查 | +
+ 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 + |
+
| 默认检测端口 | +
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
+
| 默认超时时间 | +
+
+
+ 秒
+
+ |
+
| 默认连续上线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 + |
+
| 默认连续下线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 + |
+
| 启用 | -
- |
-
| 只记录失败查询 | -
- 选中后,表示只记录查询失败的日志。 - |
-
| 包含未添加的域名 | -
- 选中后,表示日志中包含对没有在系统里创建的域名访问。 - |
-
| 启用健康检查 | -
- 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 - |
-
| 默认检测端口 | -
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 默认超时时间 | -
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -
-
-
- 次
-
- 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 - |
-
| 默认连续下线次数 | -
-
-
- 次
-
- 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 - |
-
功能说明:此功能为试验性质,目前仅能防御简单的DDoS攻击,试验期间建议仅在被攻击时启用,仅支持已安装
| 启用 | -
- |
-
| 单节点TCP最大连接数 | -
- 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 - |
-
| 单IP TCP最大连接数 | -
- 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 - |
-
| 单IP TCP新连接速率(分钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| 单IP TCP新连接速率(秒钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| TCP端口列表 | -
- 在这些端口上使用当前配置。默认为53端口。 - |
-
| IP白名单 | -
- 在白名单中的IP不受当前设置的限制。 - |
-
| 启用当前记录健康检查 | -
- |
-
| 检测端口 | -
-
- 默认{{parentConfig.port}}
- [修改]
-
-
-
-
- [使用默认]
-
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 超时时间 | -
-
- 默认{{parentConfig.timeoutSeconds}}秒
- [修改]
-
-
-
-
- [使用默认]
-
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -- - 默认{{parentConfig.countUp}}次 - [修改] - - - | -
| 默认连续下线次数 | -- - 默认{{parentConfig.countDown}}次 - [修改] - - - | -
| 记录名 | -记录类型 | -线路 | -记录值 | -TTL | -操作 | -
|---|---|---|---|---|---|
| - - | -- - | -
- |
- - - | -
-
-
- 秒
-
- |
- - - | -
| 选择类型 * | ++ + | +
| 选择线路 * | ++ + | +
| 选择省/州 | ++ + | +
| 带宽下限 * | +
+
+
+
+
+
+
+
+
+ |
+
| 带宽上限 * | +
+
+
+
+
+
+
+
+
+ 如果填0,表示上不封顶。 + |
+
| 单位价格 | +
+
+
+ 元/Mbps
+
+ 和总价格二选一。如果设置了单位价格,那么"总价格 = 单位价格 x 带宽/Mbps"。 + |
+
| 总价格 | +
+
+
+ 元
+
+ 固定的总价格,和单位价格二选一。 + |
+
| 带宽百分位 * | +
+
+
+ th
+
+ 带宽计费位置,在1-100之间。 + |
+
| 基础带宽费用 | +
+
+
+ 元/Mbps
+
+ 没有定义带宽阶梯价格时,使用此价格。 + |
+
| 带宽阶梯价格 | +
+ |
+
| 支持按区域带宽计费 | +
+ 选中后,表示可以根据节点所在区域设置不同的带宽价格。 + |
+
| 带宽算法 | +
+
+ 按在计时时间段内(5分钟)最高带宽峰值计算,比如5分钟内最高的某个时间点带宽为100Mbps,那么就认为此时间段内的峰值带宽为100Mbps。修改此选项会同时影响到用量统计图表。 +按在计时时间段内(5分钟)平均带宽计算,即此时间段内的总流量除以时间段的秒数,比如5分钟(300秒)内总流量600MiB,那么带宽即为 |
+
| 带宽下限 * | -
-
-
-
-
-
-
-
-
- |
-
| 带宽上限 * | -
-
-
-
-
-
-
-
-
- 如果填0,表示上不封顶。 - |
-
| 单位价格 | -
-
-
- 元/Mbps
-
- 和总价格二选一。如果设置了单位价格,那么"总价格 = 单位价格 x 带宽/Mbps"。 - |
-
| 总价格 | -
-
-
- 元
-
- 固定的总价格,和单位价格二选一。 - |
-
| 带宽百分位 * | -
-
-
- th
-
- 带宽计费位置,在1-100之间。 - |
-
| 基础带宽费用 | -
-
-
- 元/Mbps
-
- 没有定义带宽阶梯价格时,使用此价格。 - |
-
| 带宽阶梯价格 | -
- |
-
| 支持按区域带宽计费 | -
- 选中后,表示可以根据节点所在区域设置不同的带宽价格。 - |
-
| 带宽算法 | -
-
- 按在计时时间段内(5分钟)最高带宽峰值计算,比如5分钟内最高的某个时间点带宽为100Mbps,那么就认为此时间段内的峰值带宽为100Mbps。修改此选项会同时影响到用量统计图表。 -按在计时时间段内(5分钟)平均带宽计算,即此时间段内的总流量除以时间段的秒数,比如5分钟(300秒)内总流量600MiB,那么带宽即为 |
-
| 启用统计 | -
-
-
-
-
- |
-
| 启用HTTP/2 | -
-
-
-
-
- |
- |
| 启用HTTP/3 | -
-
-
-
-
- |
- |
| 设置证书 | -
-
-
- 选择或上传证书后HTTPSTLS服务才能生效。
-
-
-
- |
-
-
- |
-
- |
- |
| TLS最低版本 | -- - | -|
| 加密算法套件(CipherSuites) | -
-
-
-
-
-
-
-
-
-
-
-
- 点击可选套件添加。 - |
- |
| 开启HSTS | -
-
-
-
-
- - 开启后,会自动在响应Header中加入 - Strict-Transport-Security: - ... - max-age={{hsts.maxAge}} - ; includeSubDomains - ; preload - - - 修改 - - - |
- |
| HSTS有效时间(max-age) | -
-
-
-
-
-
-
- 秒
-
- {{hsts.days}}天
- - [1年/365天] - [6个月/182.5天] - [1个月/30天] - - |
- |
| HSTS包含子域名(includeSubDomains) | -
-
-
-
-
- |
- |
| HSTS预加载(preload) | -
-
-
-
-
- |
- |
| HSTS生效的域名 | -
-
-
-
-
-
-
-
-
- 取消
-
-
-
-
- 如果没有设置域名的话,则默认支持所有的域名。 - |
- |
| OCSP Stapling | -选中表示启用OCSP Stapling。 - |
- |
| 客户端认证方式 | -- - | -|
| 客户端认证CA证书 | -
-
-
-
- 用来校验客户端证书以增强安全性,通常不需要设置。 - |
- |
暂时还没有缓存条件。
-| 缓存条件 | -缓存时间 | -
|---|---|
|
- |
- - {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} - 不缓存 - | -
暂时还没有URL跳转规则。
-| - | 跳转前 | -- | 跳转后 | -HTTP状态码 | -状态 | -操作 | -
|---|---|---|---|---|---|---|
| - |
-
- {{redirect.beforeURL}}
-
-
-
-
- 所有域名
-
- {{redirect.domainsBefore[0]}}
- {{redirect.domainsBefore[0]}}等{{redirect.domainsBefore.length}}个域名
-
-
-
-
-
- 所有端口
-
- {{redirect.portsBefore.join(", ")}}
- {{redirect.portsBefore.slice(0, 5).join(", ")}}等{{redirect.portsBefore.length}}个端口
-
-
-
-
-
-
-
- |
- -> | -- {{redirect.afterURL}} - {{redirect.domainAfter}} - {{redirect.portAfter}} - | -- {{redirect.status}} - 默认 - | -- 修改 - 删除 - | -
所有规则匹配顺序为从上到下,可以拖动左侧的排序。
+Vue.component("email-sender", { + props: ["value", "name"], + data: function () { + let value = this.value + if (value == null) { + value = { + isOn: false, + smtpHost: "", + smtpPort: 0, + username: "", + password: "", + fromEmail: "", + fromName: "" + } + } + let smtpPortString = value.smtpPort.toString() + if (smtpPortString == "0") { + smtpPortString = "" + } + + return { + config: value, + smtpPortString: smtpPortString + } + }, + watch: { + smtpPortString: function (v) { + let port = parseInt(v) + if (!isNaN(port)) { + this.config.smtpPort = port + } + } + }, + methods: { + test: function () { + window.TESTING_EMAIL_CONFIG = this.config + teaweb.popup("/users/setting/emailTest", { + height: "36em" + }) + } + }, + template: `| 启用 | +|
| SMTP地址 * | +
+
+ SMTP主机地址,比如 |
+
| SMTP端口 * | +
+
+ SMTP主机端口,比如 |
+
| 用户名 * | +
+
+ 通常为发件人邮箱地址。 + |
+
| 密码 * | +
+
+ 邮箱登录密码或授权码,如不清楚,请查询对应邮件服务商文档。。 + |
+
| 发件人Email * | +
+
+ 使用的发件人邮箱地址,通常和发件用户名一致。 + |
+
| 发件人名称 | +
+
+ 使用的发件人名称,默认使用系统设置的产品名称。 + |
+
| 发送测试 | +[点此测试] | +
| 启用 | +|
| 发送渠道 | +
+
+ 通过HTTP接口的方式调用你的自定义发送短信接口。 +通过阿里云短信服务发送短信接口;目前仅支持发送验证码。 +通过腾讯云短信服务发送短信接口;目前仅支持发送验证码。 + |
+
| HTTP接口的URL地址 * | +
+
+ 接收发送短信请求的URL,必须以 |
+
| HTTP接口的请求方法 | +
+
+ 以在URL参数中加入mobile、body和code三个参数( 通过POST表单发送mobile、body和code三个参数( |
+
| 签名名称 * | +
+ 在阿里云短信服务 “签名管理” 中添加并通过审核后才能使用。 + |
+
| 模板CODE * | +
+
+ 在阿里云短信服务 “模板管理” 中添加并通过审核后才能使用。 + |
+
| 模板中验证码变量名称 * | +
+
+ 默认为 |
+
| AccessKey ID * | +
+
+ 在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 + |
+
| AccessKey Secret * | +
+
+ 和表单中的AccessKey ID对应,在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 + |
+
| SDK应用ID * | +
+
+ 在腾讯云 -- 短信 -- 应用管理 -- 应用列表中可以查看。 + |
+
| 签名内容 * | +
+
+ 比如“腾讯云”,在腾讯云 -- 短信 -- 签名管理中可以查看。 + |
+
| 正文模板ID * | +
+
+ 在腾讯云 -- 短信 -- 正文模板管理中可以查看。 + |
+
| 密钥SecretId * | +
+
+ 同SecretKey一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 + |
+
| 密钥SecretKey * | +
+
+ 同SecretId一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 + |
+
| 发送测试 | +[点此测试] | +
支持普通域名(
只支持普通域名(
{{description}}
+| 启用 | +
+ 启用后,WAF将会尝试自动检测并阻止SYN Flood攻击。此功能需要节点已安装并启用nftables或Firewalld。 + |
+
| 空连接次数 | +
+
+
+ 次/分钟
+
+ 超过此数字的"空连接"将被视为SYN Flood攻击,为了防止误判,此数值默认不小于5。 + |
+
| 封禁时长 | +
+
+
+ 秒
+
+ |
+
| 忽略局域网访问 | +
+ |
+
| 启用访问日志 | +
+
+
+
+
+ |
+
| 基础信息 | +默认记录客户端IP、请求URL等基础信息。 |
+
| 高级信息 | +
+
+
+
+
+ 在基础信息之外要存储的信息。 + 记录"请求Body"将会显著消耗更多的系统资源,建议仅在调试时启用,最大记录尺寸为2MiB。 + + |
+
| 要存储的访问日志状态码 | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
| 记录客户端中断日志 | +
+
+
+
+
+ 以 |
+
| 只记录WAF相关日志 | +
+ 选中后只记录WAF相关的日志。通过此选项可有效减少访问日志数量,降低网络带宽和存储压力。 + |
+
| 启用鉴权 | +
+
+
+
+
+ |
+
| 名称 | +鉴权方法 | +参数 | +状态 | +操作 | +
|---|---|---|---|---|
| {{ref.authPolicy.name}} | ++ {{methodName(ref.authPolicy.type)}} + | +
+ {{ref.authPolicy.params.users.length}}个用户
+
+ [{{ref.authPolicy.params.method}}]
+ {{ref.authPolicy.params.url}}
+
+ {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
+
+
+
+ |
+
+ |
+ + 修改 + 删除 + | +
| 全局缓存策略 | +
+ {{vCachePolicy.name}}
+ 当前集群没有设置缓存策略,当前配置无法生效。
+ 使用当前网站所在集群的设置。 + |
+
| 启用缓存 | +
+
+
+
+
+ |
+ ||||
| 缓存主域名 | +
+ 默认 [修改]
+ 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
+
+
+
+
|
+ ||||
| + 收起选项更多选项 + | +|||||
| 使用默认缓存条件 | +
+ 选中后使用系统全局缓存策略中已经定义的默认缓存条件。 + |
+ ||||
| 添加X-Cache报头 | +
+ 选中后自动在响应报头中增加 |
+ ||||
| 添加Age Header | +
+ 选中后自动在响应Header中增加 |
+ ||||
| 支持源站控制有效时间 | +
+ 选中后表示支持源站在Header中设置的 |
+ ||||
| 允许PURGE | +
+ 允许使用PURGE方法清除某个URL缓存。 + |
+ ||||
| PURGE Key * | +
+
+ [随机生成]。需要在PURGE方法调用时加入 |
+ ||||
| 启用请求限制 | -
- |
-
| 最大并发连接数 | -
-
- 当前网站最大并发连接数,超出此限制则响应用户 |
-
| 单IP最大并发连接数 | -
-
- 单IP最大连接数,统计单个IP总连接数时不区分网站,超出此限制则响应用户 |
-
| 单连接带宽限制 | -
- 客户端单个请求每秒可以读取的下行流量。 - |
-
| 单请求最大尺寸 | -
- 单个请求能发送的最大内容尺寸。 - |
-
| 全局WAF策略 | -
- {{vFirewallPolicy.name}} [{{vFirewallPolicy.modeInfo.name}}]
- 当前集群没有设置WAF策略,当前配置无法生效。
- 当前网站所在集群的设置。 - |
-
| 启用Web防火墙 | -
- 选中后,表示启用当前网站的WAF功能。 - |
-
| 人机识别验证方式 | -
-
- 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 -{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 - |
-
| 启用系统全局规则 | -
- 选中后,表示使用系统全局WAF策略中定义的规则。 - |
-
| 对象 | -数值 | -占比 | -
|---|---|---|
| " + v.keys[0] + " | " + value + " | " - let percent = 0 - if (v.total > 0) { - percent = Math.round((v.value * 100 / v.total) * 100) / 100 - } - table += "" + percent + "% | "
- table += "
| 全局缓存策略 | -
- {{vCachePolicy.name}}
- 当前集群没有设置缓存策略,当前配置无法生效。
- 使用当前网站所在集群的设置。 - |
-
| 启用缓存 | -
-
-
-
-
- |
- ||||
| 缓存主域名 | -
- 默认 [修改]
- 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
-
-
-
-
|
- ||||
| - 收起选项更多选项 - | -|||||
| 使用默认缓存条件 | -
- 选中后使用系统全局缓存策略中已经定义的默认缓存条件。 - |
- ||||
| 添加X-Cache报头 | -
- 选中后自动在响应报头中增加 |
- ||||
| 添加Age Header | -
- 选中后自动在响应Header中增加 |
- ||||
| 支持源站控制有效时间 | -
- 选中后表示支持源站在Header中设置的 |
- ||||
| 允许PURGE | -
- 允许使用PURGE方法清除某个URL缓存。 - |
- ||||
| PURGE Key * | -
-
- [随机生成]。需要在PURGE方法调用时加入 |
- ||||
暂时还没有缓存条件。
+| 缓存条件 | +缓存时间 | +
|---|---|
|
+ |
+ + {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} + 不缓存 + | +
| 通用Header列表 | -
- 需要检查的Header列表。 - |
-
| Header值超出长度 | -
-
-
- 字节
-
- 超出此长度认为匹配成功,0表示不限制。 - |
-
| 统计对象组合 * | -
- |
-
| 统计周期 * | -
-
-
- 秒
-
- |
-
| 阈值 * | -
-
- 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 来源域名允许为空 | -
- 允许不带来源的访问。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 源站地址 | -权重 | -状态 | -操作 | -||||
|---|---|---|---|---|---|---|---|
|
- {{origin.addr}}
-
-
- |
- {{origin.weight}} | +
| 启用过时缓存 |
- |
+
| 有效期 |
- 修改
- 停用启用
- 删除
+ 缓存在过期之后,仍然保留的时间。 + |
+
| 状态码 | +在这些状态码出现时使用过时缓存,默认支持 |
+
| 支持stale-if-error | +
+ 选中后,支持在Cache-Control中通过 |
| 启用CC无感防护 | +
+ |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 启用GET302校验 | +
+ 选中后,表示自动通过GET302方法来校验客户端。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) + |
+
| 使用自定义拦截阈值 | +
+ |
+
| 自定义拦截阈值设置 | +
+
+
+
+
+ 单IP每5秒最多
+
+ 请求
+
+
+
+
+ 单IP每60秒
+
+ 请求
+
+
+
+
+ 单IP每300秒
+
+ 请求
+
+ |
+
| 启用字符编码 | +
+
+
+
+
+ |
+
| 选择字符编码 | ++ | +
| 强制替换 | +
+ 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 + |
+
| 字符编码大写 | +
+
+
+
+
+ 选中后将指定的字符编码转换为大写,比如默认为 |
+
| 合并重复的路径分隔符 | +
+
+
+
+
+ 合并URL中重复的路径分隔符为一个,比如 |
+
| 启用内容压缩 | +
+
+
+
+
+ |
+
| 支持的扩展名 | +
+ 含有这些扩展名的URL将会被压缩,不区分大小写。 + |
+
| 例外扩展名 | +
+ 含有这些扩展名的URL将不会被压缩,不区分大小写。 + |
+
| 支持的MimeType | +
+ 响应的Content-Type里包含这些MimeType的内容将会被压缩。 + |
+
| 压缩算法 | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择支持的压缩算法和优先顺序,拖动图表排序。 + |
+
| 支持已压缩内容 | +
+ 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 + |
+
| 内容最小长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 内容最大长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 支持Partial Content |
+
+ 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
+完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
+参数值除以10的余数,在0-9之间。
+参数值除以100的余数,在0-99之间。
+和参数值一致的字符串。
+和参数值不一致的字符串。
+参数值的前缀。
+参数值的后缀为此字符串。
+参数值包含此字符串。
+参数值不包含此字符串。
+添加参数值列表。
+添加参数值列表。
+添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
+参数中IP转换成整数后除以10的余数,在0-9之间。
+参数中IP转换成整数后除以100的余数,在0-99之间。
+选中后表示对比时忽略参数值的大小写。
+| HTML优化 | +启用页面动态加密 |
-
+
- 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 +启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 |
| HTML例外URL | +排除 URL |
- 如果填写了例外URL,表示这些URL跳过不做处理。 +这些 URL 将跳过加密处理,支持正则表达式。 |
| HTML限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
- |
| Javascript优化 | -
-
-
-
-
- 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 - |
-
| Javascript例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| Javascript限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| CSS优化 | -
-
-
-
-
- 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 - |
-
| CSS例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| CSS限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| HTML 加密 | +
+
+
+
+
+ 加密 HTML 页面中的 JavaScript 脚本。 + |
+
| 加密内联脚本 | +
+
+
+
+
+ 加密 HTML 中的内联 <script> 标签内容。 + |
+
| 加密外部脚本 | +
+
+
+
+
+ 加密通过 src 属性引入的外部 JavaScript 文件。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| JavaScript 文件加密 | +
+
+
+
+
+ 加密独立的 JavaScript 文件(.js 文件)。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| 服务器端密钥 | +
+
+ 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! + |
+
| 时间分片(秒) | +
+
+ 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 + |
+
| IP CIDR 前缀长度 | +
+
+ 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 + |
+
| 简化 User-Agent | +
+
+
+
+
+ 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 + |
+
| 启用缓存 | +
+
+
+
+
+ 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 + |
+
| 缓存 TTL(秒) | +
+
+ 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 + |
+
| 最大缓存条目数 | +
+
+ 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 + |
+
| 启用 | +启用后,将会在响应的Header中添加 |
+
| 覆盖源站设置 | +
+ 选中后,会覆盖源站Header中已有的 |
+
| 自动计算时间 | +根据已设置的缓存有效期进行计算。 + |
+
| 强制缓存时间 | +
+ 从客户端访问的时间开始要缓存的时长。 + |
+
| 启用Websocket | +启用配置 |
-
+
|
| 允许所有来源域(Origin) | +Fastcgi服务 |
-
-
-
-
- 选中表示允许所有的来源域。 - |
-
| 允许的来源域列表(Origin) | -- | |
| 传递请求来源域 | -
-
-
-
-
- 选中后,表示把接收到的请求中的 |
- |
| 指定传递的来源域 | -
-
- 指定向源站传递的Origin字段值。 - |
- |
| 握手超时时间(Handshake) | -
-
-
-
-
-
-
- 秒
-
- 0表示使用默认的时间设置。 - |
-
暂时还没有重写规则。
-| - | 匹配规则 | -转发目标 | -转发方式 | -状态 | -操作 | -
|---|---|---|---|---|---|
| - | {{rule.pattern}}
- - |
- {{rule.replace}} | -- 隐式 - 显示 - | -
- |
- - 修改 - 删除 - | -
拖动左侧的图标可以对重写规则进行排序。
- -| 启用5秒盾 | -
- |
-
| 验证有效期 | -
-
-
- 秒
-
- 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 - |
-
| 加入IP白名单 | -
- 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 - |
-
| 匹配条件 | -
- |
-
| 启用过时缓存 | -
- |
-
| 有效期 | -
- 缓存在过期之后,仍然保留的时间。 - |
-
| 状态码 | -在这些状态码出现时使用过时缓存,默认支持 |
-
| 支持stale-if-error | -
- 选中后,支持在Cache-Control中通过 |
-
支持普通域名(
只支持普通域名(
| 启用防盗链 | -
-
-
-
-
- 选中后表示开启防盗链。 - |
-
| 允许直接访问网站 | -
- 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的其他来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 - |
-
| 自动跳转到HTTPS | -
-
-
-
-
- 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
|
-
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | -- - | -
| 跳转后域名或IP地址 | -
-
- 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 - |
-
| 端口 | -
-
- 默认端口为443。 - |
-
| 允许的域名 | -
- 如果填写了允许的域名,那么只有这些域名可以自动跳转。 - |
-
| 排除的域名 | -
- 如果填写了排除的域名,那么这些域名将不跳转。 - |
-
| 状态码 | ++ + | +
| 提示内容 | ++ + | +
| 封禁时长 | +
+
+
+ 秒
+
+ 触发阻止动作时,封禁客户端IP的时间。 + |
+
| 最大封禁时长 | +
+
+
+ 秒
+
+ 如果最大封禁时长大于封禁时长({{timeout}}秒),那么表示每次封禁的时候,将会在这两个时长数字之间随机选取一个数字作为最终的封禁时长。 + |
+
| 失败全局封禁 | +
+ 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 + |
+
| 默认验证方式 | +
+
+ {{captchaDef.description}} + |
+
| 有效时间 | +
+
+
+ 秒
+
+ 验证通过后在这个时间内不再验证,默认600秒。 + |
+
| 最多失败次数 | +
+
+
+ 次
+
+ 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 + |
+
| 失败拦截时间 | +
+
+
+ 秒
+
+ 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 + |
+
| 失败全局封禁 | +
+ 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 + |
+
| 验证码中数字个数 | ++ + | +
| 定制UI | +|
| 页面标题 | ++ + | +
| 按钮标题 | +
+
+ 类似于 |
+
| 显示请求ID | +
+ 在界面上显示请求ID,方便用户报告问题。 + |
+
| CSS样式 | ++ + | +
| 页头提示 | +
+
+ 类似于 |
+
| 页尾提示 | +
+
+ 支持HTML。 + |
+
| 页面模板 | +
+
+ 警告:{{uiBodyWarning}}模板中必须包含\${body}表示验证码表单!整个页面的模板,支持HTML,其中必须使用 |
+
| 允许用户使用极验 | +选中后,表示允许用户在WAF设置中选择极验。 + |
+
| 极验-验证ID * | +
+
+ 在极验控制台--业务管理中获取。 + |
+
| 极验-验证Key * | +
+
+ 在极验控制台--业务管理中获取。 + |
+
| 全局WAF策略 | +
+ {{vFirewallPolicy.name}} [{{vFirewallPolicy.modeInfo.name}}]
+ 当前集群没有设置WAF策略,当前配置无法生效。
+ 当前网站所在集群的设置。 + |
+
| 启用Web防火墙 | +
+ 选中后,表示启用当前网站的WAF功能。 + |
+
| 人机识别验证方式 | +
+
+ 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 +{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 + |
+
| 启用系统全局规则 | +
+ 选中后,表示使用系统全局WAF策略中定义的规则。 + |
+
| 有效时间 | +
+
+
+ 秒
+
+ 验证通过后在这个时间内不再验证,默认3600秒。 + |
+
| 最多失败次数 | +
+
+
+ 次
+
+ 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 + |
+
| 失败拦截时间 | +
+
+
+ 秒
+
+ 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 + |
+
| 失败全局封禁 | +
+ 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 + |
+
| 状态码 * | ++ |
| 网页内容 | ++ + + | +
| 通用Header列表 | +
+ 需要检查的Header列表。 + |
+
| Header值超出长度 | +
+
+
+ 字节
+
+ 超出此长度认为匹配成功,0表示不限制。 + |
+
| 统计对象组合 * | +
+ |
+
| 统计周期 * | +
+
+
+ 秒
+
+ |
+
| 阈值 * | +
+
+ 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 来源域名允许为空 | +
+ 允许不带来源的访问。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 启用鉴权 | +启用Gzip压缩 |
-
+
|
| 压缩级别 | +
+
+ 级别越高,压缩比例越大。 + |
+ |
| Gzip内容最小长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+ |
| Gzip内容最大长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+ |
| 匹配条件 | +
+ |
+
| 名称 | -鉴权方法 | -参数 | -状态 | -操作 | -
|---|---|---|---|---|
| {{ref.authPolicy.name}} | -- {{methodName(ref.authPolicy.type)}} - | -
- {{ref.authPolicy.params.users.length}}个用户
-
- [{{ref.authPolicy.params.method}}]
- {{ref.authPolicy.params.url}}
-
- {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
-
-
-
- |
-
- |
- - 修改 - 删除 - | -
| 合并重复的路径分隔符 | -
-
-
-
-
- 合并URL中重复的路径分隔符为一个,比如 |
- ||||||||||||||||||
| 启用HLS加密 | +
+ 启用后,系统会自动在 |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 + |
+
暂时还没有URL跳转规则。
+| + | 跳转前 | ++ | 跳转后 | +HTTP状态码 | +状态 | +操作 | +
|---|---|---|---|---|---|---|
| + |
+
+ {{redirect.beforeURL}}
+
+
+
+
+ 所有域名
+
+ {{redirect.domainsBefore[0]}}
+ {{redirect.domainsBefore[0]}}等{{redirect.domainsBefore.length}}个域名
+
+
+
+
+
+ 所有端口
+
+ {{redirect.portsBefore.join(", ")}}
+ {{redirect.portsBefore.slice(0, 5).join(", ")}}等{{redirect.portsBefore.length}}个端口
+
+
+
+
+
+
+
+ |
+ -> | ++ {{redirect.afterURL}} + {{redirect.domainAfter}} + {{redirect.portAfter}} + | ++ {{redirect.status}} + 默认 + | ++ 修改 + 删除 + | +
所有规则匹配顺序为从上到下,可以拖动左侧的排序。
| HTML优化 | +
+
+
+
+
+ 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 + |
+
| HTML例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| HTML限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| Javascript优化 | +
+
+
+
+
+ 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 + |
+
| Javascript例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| Javascript限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| CSS优化 | +
+
+
+
+
+ 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 + |
+
| CSS例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| CSS限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
{{param.description.replace("\${optionName}", name)}}
+{{name}}名称,类似于
{{name}}参数名称,比如
| 响应状态码 | +页面类型 | +新状态码 | +例外URL | +限制URL | +操作 | +
|---|---|---|---|---|---|
| + + {{page.status[0]}} + {{page.status}} + + + + | +
+
+ {{page.url}}
+
+
+
+
+ {{page.url}}
+
+
+
+
+ [HTML内容]
+
+
+
+ |
+ + {{page.newStatus}} + 保持 + | +
+
+ {{urlPattern.pattern}}
+
+ -
+ |
+
+
+ {{urlPattern.pattern}}
+
+ -
+ |
+ + 修改 + 删除 + | +
| 自动跳转到HTTPS | +
+
+
+
+
+ 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
|
+
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | ++ + | +
| 跳转后域名或IP地址 | +
+
+ 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 + |
+
| 端口 | +
+
+ 默认端口为443。 + |
+
| 允许的域名 | +
+ 如果填写了允许的域名,那么只有这些域名可以自动跳转。 + |
+
| 排除的域名 | +
+ 如果填写了排除的域名,那么这些域名将不跳转。 + |
+
| 启用防盗链 | +
+
+
+
+
+ 选中后表示开启防盗链。 + |
+
| 允许直接访问网站 | +
+ 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的其他来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 + |
+
| 启用访客IP设置 | +
+
+
+
+
+ 选中后,表示使用自定义的请求变量获取客户端IP。 + |
+
| 获取IP方式 * | +
+
+ {{option.description}} + |
+
| 请求报头 * | +
+
+ 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
+
| 读取IP变量值 * | +
+
+ 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 |
+
| 启用请求限制 | +
+ |
+
| 最大并发连接数 | +
+
+ 当前网站最大并发连接数,超出此限制则响应用户 |
+
| 单IP最大并发连接数 | +
+
+ 单IP最大连接数,统计单个IP总连接数时不区分网站,超出此限制则响应用户 |
+
| 单连接带宽限制 | +
+ 客户端单个请求每秒可以读取的下行流量。 + |
+
| 单请求最大尺寸 | +
+ 单个请求能发送的最大内容尺寸。 + |
+
| 启用页面动态加密 | -
-
-
-
-
- 启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 - |
-
| 排除 URL | -
- 这些 URL 将跳过加密处理,支持正则表达式。 - |
-
| HTML 加密 | -
-
-
-
-
- 加密 HTML 页面中的 JavaScript 脚本。 - |
-
| 加密内联脚本 | -
-
-
-
-
- 加密 HTML 中的内联 <script> 标签内容。 - |
-
| 加密外部脚本 | -
-
-
-
-
- 加密通过 src 属性引入的外部 JavaScript 文件。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| JavaScript 文件加密 | -
-
-
-
-
- 加密独立的 JavaScript 文件(.js 文件)。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| 服务器端密钥 | -
-
- 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! - |
-
| 时间分片(秒) | -
-
- 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 - |
-
| IP CIDR 前缀长度 | -
-
- 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 - |
-
| 简化 User-Agent | -
-
-
-
-
- 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 - |
-
| 启用缓存 | -
-
-
-
-
- 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 - |
-
| 缓存 TTL(秒) | -
-
- 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 - |
-
| 最大缓存条目数 | -
-
- 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 - |
-
在请求刚初始化时调用,此时自定义报头等尚未生效。
+在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
+| 状态码 * | -- | ||||||||||||||||||
| 网页内容 | -- - - | -||||||||||||||||||
| + | 匹配规则 | +转发目标 | +转发方式 | +状态 | +操作 | +
|---|---|---|---|---|---|
| + | {{rule.pattern}}
+ + |
+ {{rule.replace}} | ++ 隐式 + 显示 + | +
+ |
+ + 修改 + 删除 + | +
拖动左侧的图标可以对重写规则进行排序。
+ +` }) -Vue.component("http-firewall-js-cookie-options", { - props: ["v-js-cookie-options"], - mounted: function () { - this.updateSummary() - }, - data: function () { - let options = this.vJsCookieOptions - if (options == null) { - options = { - life: 0, - maxFails: 0, - failBlockTimeout: 0, - failBlockScopeAll: false, - scope: "service" - } - } +Vue.component("http-rewrite-labels-label", { + props: ["v-class"], + template: `| 启用统计 | +
+
+
+
+
+ |
+
| 有效时间 | -
-
-
- 秒
-
- 验证通过后在这个时间内不再验证,默认3600秒。 - |
-
| 最多失败次数 | -
-
-
- 次
-
- 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 - |
-
| 失败拦截时间 | -
-
-
- 秒
-
- 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 - |
-
| 失败全局封禁 | -
- 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 - |
-
| 启用静态资源分发 | +
+
+
+
+
+ |
+
| 静态资源根目录 | +
+
+ 可以访问此根目录下的静态资源。 + |
+
| 首页文件 | +
+
+
+
+ 在URL中只有目录没有文件名时默认查找的首页文件。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示不支持通过这些URL访问。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示仅支持通过这些URL访问。 + |
+
| 排除隐藏文件 | +
+ 排除以点(.)符号开头的隐藏目录或文件,比如 |
+
| 去除URL前缀 | +
+
+ 可以把请求的路径部分前缀去除后再查找文件,比如把 /web/app/index.html 去除前缀 /web 后就变成 /app/index.html。 + |
+
| 路径解码 | +
+
+
+
+
+ 是否对请求路径进行URL解码,比如把 /Web+App+Browser.html 解码成 /Web App Browser.html 再查找文件。 + |
+
| 终止请求 | +
+
+
+
+
+ 在找不到要访问的文件的情况下是否终止请求并返回404,如果选择终止请求,则不再尝试反向代理等设置。 + |
+
| 启用内容压缩 | +启用WebP压缩 |
|
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被压缩,不区分大小写。 - |
- |
| 例外扩展名 | -
- 含有这些扩展名的URL将不会被压缩,不区分大小写。 - |
- |
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被压缩。 +选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 |
|
| 压缩算法 | +支持的扩展名 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 选择支持的压缩算法和优先顺序,拖动图表排序。 +含有这些扩展名的URL将会被转成WebP,不区分大小写。 |
| 支持已压缩内容 | +支持的MimeType |
- 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 +响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 |
| 支持Partial Content |
-
- 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 - |
- |
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
- |
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 - |
- |
| 匹配条件 |
|
+
| 启用Websocket | +
+
+
+
+
+ |
+ ||||||||||||||||||
| 允许所有来源域(Origin) | +
+
+
+
+
+ 选中表示允许所有的来源域。 + |
+ ||||||||||||||||||
| 允许的来源域列表(Origin) | +
+
+
+ 只允许在列表中的来源域名访问Websocket服务。 + |
+ ||||||||||||||||||
| 传递请求来源域 | +
+
+
+
+
+ 选中后,表示把接收到的请求中的 |
+ ||||||||||||||||||
| 指定传递的来源域 | +
+
+ 指定向源站传递的Origin字段值。 + |
+ ||||||||||||||||||
| 握手超时时间(Handshake) | +
+
+
+
+
+
+
+ 秒
+
+ 0表示使用默认的时间设置。 |
||||||||||||||||||
| 对象 | +数值 | +占比 | +
|---|---|---|
| " + v.keys[0] + " | " + value + " | " + let percent = 0 + if (v.total > 0) { + percent = Math.round((v.value * 100 / v.total) * 100) / 100 + } + table += "" + percent + "% | "
+ table += "
| 启用CC无感防护 | -
- |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 启用GET302校验 | -
- 选中后,表示自动通过GET302方法来校验客户端。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) - |
-
| 使用自定义拦截阈值 | -
- |
-
| 自定义拦截阈值设置 | -
-
-
-
-
- 单IP每5秒最多
-
- 请求
-
-
-
-
- 单IP每60秒
-
- 请求
-
-
-
-
- 单IP每300秒
-
- 请求
-
- |
-
{{description}}
+// 指标对象 +Vue.component("metric-keys-config-box", { + props: ["v-keys"], + data: function () { + let keys = this.vKeys + if (keys == null) { + keys = [] + } + return { + keys: keys, + isAdding: false, + key: "", + subKey: "", + keyDescription: "", + + keyDefs: window.METRIC_HTTP_KEYS + } + }, + watch: { + keys: function () { + this.$emit("change", this.keys) + } + }, + methods: { + cancel: function () { + this.key = "" + this.subKey = "" + this.keyDescription = "" + this.isAdding = false + }, + confirm: function () { + if (this.key.length == 0) { + return + } + + if (this.key.indexOf(".NAME") > 0) { + if (this.subKey.length == 0) { + teaweb.warn("请输入参数值") + return + } + this.key = this.key.replace(".NAME", "." + this.subKey) + } + this.keys.push(this.key) + this.cancel() + }, + add: function () { + this.isAdding = true + let that = this + setTimeout(function () { + if (that.$refs.key != null) { + that.$refs.key.focus() + } + }, 100) + }, + remove: function (index) { + this.keys.$remove(index) + }, + changeKey: function () { + if (this.key.length == 0) { + return + } + let that = this + let def = this.keyDefs.$find(function (k, v) { + return v.code == that.key + }) + if (def != null) { + this.keyDescription = def.description + } + }, + keyName: function (key) { + let that = this + let subKey = "" + let def = this.keyDefs.$find(function (k, v) { + if (v.code == key) { + return true + } + if (key.startsWith("${arg.") && v.code.startsWith("${arg.")) { + subKey = that.getSubKey("arg.", key) + return true + } + if (key.startsWith("${header.") && v.code.startsWith("${header.")) { + subKey = that.getSubKey("header.", key) + return true + } + if (key.startsWith("${cookie.") && v.code.startsWith("${cookie.")) { + subKey = that.getSubKey("cookie.", key) + return true + } + return false + }) + if (def != null) { + if (subKey.length > 0) { + return def.name + ": " + subKey + } + return def.name + } + return key + }, + getSubKey: function (prefix, key) { + prefix = "${" + prefix + let index = key.indexOf(prefix) + if (index >= 0) { + key = key.substring(index + prefix.length) + key = key.substring(0, key.length - 1) + return key + } + return "" + } + }, + template: `` +}) + +// 指标周期设置 +Vue.component("metric-period-config-box", { + props: ["v-period", "v-period-unit"], + data: function () { + let period = this.vPeriod + let periodUnit = this.vPeriodUnit + if (period == null || period.toString().length == 0) { + period = 1 + } + if (periodUnit == null || periodUnit.length == 0) { + periodUnit = "day" + } + return { + periodConfig: { + period: period, + unit: periodUnit + } + } + }, + watch: { + "periodConfig.period": function (v) { + v = parseInt(v) + if (isNaN(v) || v <= 0) { + v = 1 + } + this.periodConfig.period = v + } + }, + template: `在此周期内同一对象累积为同一数据。
+| 源站地址 | +权重 | +状态 | +操作 | +
|---|---|---|---|
|
+ {{origin.addr}}
+
+
+ |
+ {{origin.weight}} | +
+ |
+ + 修改 + 停用启用 + 删除 + | +
| 当前正在使用的算法 | +
+ {{scheduling.name}} [修改]
+ {{scheduling.description}} + |
+
| 启用字符编码 | -
-
-
-
-
- |
-
| 选择字符编码 | -- | -
| 强制替换 | -
- 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 - |
-
| 字符编码大写 | -
-
-
-
-
- 选中后将指定的字符编码转换为大写,比如默认为 |
-
| 启用 | -启用后,将会在响应的Header中添加 |
-
| 覆盖源站设置 | -
- 选中后,会覆盖源站Header中已有的 |
-
| 自动计算时间 | -根据已设置的缓存有效期进行计算。 - |
-
| 强制缓存时间 | -
- 从客户端访问的时间开始要缓存的时长。 - |
-
| 启用访问日志 | -
-
-
-
-
- |
-
| 基础信息 | -默认记录客户端IP、请求URL等基础信息。 |
-
| 高级信息 | -
-
-
-
-
- 在基础信息之外要存储的信息。 - 记录"请求Body"将会显著消耗更多的系统资源,建议仅在调试时启用,最大记录尺寸为2MiB。 - - |
-
| 要存储的访问日志状态码 | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
| 记录客户端中断日志 | -
-
-
-
-
- 以 |
-
| 只记录WAF相关日志 | -
- 选中后只记录WAF相关的日志。通过此选项可有效减少访问日志数量,降低网络带宽和存储压力。 - |
-
| 启用Gzip压缩 | -
-
-
-
-
- |
-
| 压缩级别 | -
-
- 级别越高,压缩比例越大。 - |
-
| Gzip内容最小长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| Gzip内容最大长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 匹配条件 | -
- |
-
| 启用脚本设置 | -|
| 脚本代码 | -
- - 管理员审核结果:审核通过。 - 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} - 当前脚本将在审核后生效,请耐心等待审核结果。 去审核 » - -管理员审核结果:审核通过。 -{{comment}} - |
-
| 启用访客IP设置 | -
-
-
-
-
- 选中后,表示使用自定义的请求变量获取客户端IP。 - |
+ 启用脚本设置 | +|
| 获取IP方式 * | +|||
| 脚本代码 |
-
- {{option.description}} - |
- ||
| 请求报头 * | -
-
- 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
- ||
| 读取IP变量值 * | -
-
- 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 + 管理员审核结果:审核通过。 + 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} + 当前脚本将在审核后生效,请耐心等待审核结果。 去审核 » + +管理员审核结果:审核通过。 +{{comment}} |
| 启用静态资源分发 | -
-
-
-
-
- |
-
| 静态资源根目录 | -
-
- 可以访问此根目录下的静态资源。 - |
-
| 首页文件 | -
-
-
-
- 在URL中只有目录没有文件名时默认查找的首页文件。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示不支持通过这些URL访问。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示仅支持通过这些URL访问。 - |
-
| 排除隐藏文件 | -
- 排除以点(.)符号开头的隐藏目录或文件,比如 |
-
| 去除URL前缀 | -
-
- 可以把请求的路径部分前缀去除后再查找文件,比如把 /web/app/index.html 去除前缀 /web 后就变成 /app/index.html。 - |
-
| 路径解码 | -
-
-
-
-
- 是否对请求路径进行URL解码,比如把 /Web+App+Browser.html 解码成 /Web App Browser.html 再查找文件。 - |
-
| 终止请求 | -
-
-
-
-
- 在找不到要访问的文件的情况下是否终止请求并返回404,如果选择终止请求,则不再尝试反向代理等设置。 - |
-
| 启用WebP压缩 | -
-
-
-
-
- 选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 - |
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被转成WebP,不区分大小写。 - |
-
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 - |
-
| 内容最小长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 内容最大长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 匹配条件 | -
- |
-
| 当前正在使用的算法 | -
- {{scheduling.name}} [修改]
- {{scheduling.description}} - |
-
| 状态码 | -- - | -
| 提示内容 | -- - | -
| 封禁时长 | -
-
-
- 秒
-
- 触发阻止动作时,封禁客户端IP的时间。 - |
-
| 最大封禁时长 | -
-
-
- 秒
-
- 如果最大封禁时长大于封禁时长({{timeout}}秒),那么表示每次封禁的时候,将会在这两个时长数字之间随机选取一个数字作为最终的封禁时长。 - |
-
| 失败全局封禁 | -
- 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 - |
-
| 启用HLS加密 | -
- 启用后,系统会自动在 |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 - |
-
{{param.description.replace("\${optionName}", name)}}
-{{name}}名称,类似于
{{name}}参数名称,比如
在请求刚初始化时调用,此时自定义报头等尚未生效。
-在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
-URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
-完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
-参数值除以10的余数,在0-9之间。
-参数值除以100的余数,在0-99之间。
-和参数值一致的字符串。
-和参数值不一致的字符串。
-参数值的前缀。
-参数值的后缀为此字符串。
-参数值包含此字符串。
-参数值不包含此字符串。
-添加参数值列表。
-添加参数值列表。
-添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
-参数中IP转换成整数后除以10的余数,在0-9之间。
-参数中IP转换成整数后除以100的余数,在0-99之间。
-选中后表示对比时忽略参数值的大小写。
-| 启用HTTP/2 | +
+
+
+
+
+ |
+ |
| 启用HTTP/3 | +
+
+
+
+
+ |
+ |
| 设置证书 | +
+
+
+ 选择或上传证书后HTTPSTLS服务才能生效。
+
+
+
+ |
+
+
+ |
+
+ |
+ |
| TLS最低版本 | ++ + | +|
| 加密算法套件(CipherSuites) | +
+
+
+
+
+
+
+
+
+
+
+
+ 点击可选套件添加。 + |
+ |
| 开启HSTS | +
+
+
+
+
+ + 开启后,会自动在响应Header中加入 + Strict-Transport-Security: + ... + max-age={{hsts.maxAge}} + ; includeSubDomains + ; preload + + + 修改 + + + |
+ |
| HSTS有效时间(max-age) | +
+
+
+
+
+
+
+ 秒
+
+ {{hsts.days}}天
+ + [1年/365天] + [6个月/182.5天] + [1个月/30天] + + |
+ |
| HSTS包含子域名(includeSubDomains) | +
+
+
+
+
+ |
+ |
| HSTS预加载(preload) | +
+
+
+
+
+ |
+ |
| HSTS生效的域名 | +
+
+
+
+
+
+
+
+
+ 取消
+
+
+
+
+ 如果没有设置域名的话,则默认支持所有的域名。 + |
+ |
| OCSP Stapling | +选中表示启用OCSP Stapling。 + |
+ |
| 客户端认证方式 | ++ + | +|
| 客户端认证CA证书 | +
+
+
+
+ 用来校验客户端证书以增强安全性,通常不需要设置。 + |
+ |
| 默认验证方式 | -
-
- {{captchaDef.description}} - |
-
| 有效时间 | -
-
-
- 秒
-
- 验证通过后在这个时间内不再验证,默认600秒。 - |
-
| 最多失败次数 | -
-
-
- 次
-
- 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 - |
-
| 失败拦截时间 | -
-
-
- 秒
-
- 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 - |
-
| 失败全局封禁 | -
- 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 - |
-
| 验证码中数字个数 | -- - | -
| 定制UI | -|
| 页面标题 | -- - | -
| 按钮标题 | -
-
- 类似于 |
-
| 显示请求ID | -
- 在界面上显示请求ID,方便用户报告问题。 - |
-
| CSS样式 | -- - | -
| 页头提示 | -
-
- 类似于 |
-
| 页尾提示 | -
-
- 支持HTML。 - |
-
| 页面模板 | -
-
- 警告:{{uiBodyWarning}}模板中必须包含\${body}表示验证码表单!整个页面的模板,支持HTML,其中必须使用 |
-
| 允许用户使用极验 | -选中后,表示允许用户在WAF设置中选择极验。 - |
-
| 极验-验证ID * | -
-
- 在极验控制台--业务管理中获取。 - |
-
| 极验-验证Key * | -
-
- 在极验控制台--业务管理中获取。 - |
-
| 启用5秒盾 | +
+ |
+
| 验证有效期 | +
+
+
+ 秒
+
+ 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 + |
+
| 加入IP白名单 | +
+ 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
| 响应状态码 | -页面类型 | -新状态码 | -例外URL | -限制URL | -操作 | -
|---|---|---|---|---|---|
| - - {{page.status[0]}} - {{page.status}} - - - - | -
-
- {{page.url}}
-
-
-
-
- {{page.url}}
-
-
-
-
- [HTML内容]
-
-
-
- |
- - {{page.newStatus}} - 保持 - | -
-
- {{urlPattern.pattern}}
-
- -
- |
-
-
- {{urlPattern.pattern}}
-
- -
- |
- - 修改 - 删除 - | -
| 启用 | -
- 启用后,WAF将会尝试自动检测并阻止SYN Flood攻击。此功能需要节点已安装并启用nftables或Firewalld。 - |
-
| 空连接次数 | -
-
-
- 次/分钟
-
- 超过此数字的"空连接"将被视为SYN Flood攻击,为了防止误判,此数值默认不小于5。 - |
-
| 封禁时长 | -
-
-
- 秒
-
- |
-
| 忽略局域网访问 | -
- |
-
|
-
-
-
-
- |
- IP | -类型 | -级别 | -过期时间 | -备注 | -操作 | -
|---|---|---|---|---|---|---|
|
-
-
-
-
- |
-
-
-
- {{item.region}}
- | {{item.isp}}
-
- {{item.isp}}
-
-
- 添加于 {{item.createdTime}}
-
- @
-
- [黑白灰名单:{{item.list.name}}]
- [黑白灰名单:{{item.list.name}}
-
-
-
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
-
-
- [策略:{{item.policy.name}}]
-
-
-
-
-
- |
- - IPv4 - IPv4 - IPv6 - 所有IP - | -- {{item.eventLevelName}} - - - | -
-
- {{item.expiredTime}}
-
- 不过期
-
- 已过期
-
-
- {{formatSeconds(item.lifeSeconds)}}
- 已过期
-
- |
- - {{item.reason}} - - - - - - - | -- 日志 - 修改 - 删除 - | -
| 启用 | -|
| 发送渠道 | -
-
- 通过HTTP接口的方式调用你的自定义发送短信接口。 -通过阿里云短信服务发送短信接口;目前仅支持发送验证码。 -通过腾讯云短信服务发送短信接口;目前仅支持发送验证码。 - |
-
| HTTP接口的URL地址 * | -
-
- 接收发送短信请求的URL,必须以 |
-
| HTTP接口的请求方法 | -
-
- 以在URL参数中加入mobile、body和code三个参数( 通过POST表单发送mobile、body和code三个参数( |
-
| 签名名称 * | -
- 在阿里云短信服务 “签名管理” 中添加并通过审核后才能使用。 - |
-
| 模板CODE * | -
-
- 在阿里云短信服务 “模板管理” 中添加并通过审核后才能使用。 - |
-
| 模板中验证码变量名称 * | -
-
- 默认为 |
-
| AccessKey ID * | -
-
- 在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 - |
-
| AccessKey Secret * | -
-
- 和表单中的AccessKey ID对应,在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 - |
-
| SDK应用ID * | -
-
- 在腾讯云 -- 短信 -- 应用管理 -- 应用列表中可以查看。 - |
-
| 签名内容 * | -
-
- 比如“腾讯云”,在腾讯云 -- 短信 -- 签名管理中可以查看。 - |
-
| 正文模板ID * | -
-
- 在腾讯云 -- 短信 -- 正文模板管理中可以查看。 - |
-
| 密钥SecretId * | -
-
- 同SecretKey一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 - |
-
| 密钥SecretKey * | -
-
- 同SecretId一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 - |
-
| 发送测试 | -[点此测试] | -
| 启用 | -|
| SMTP地址 * | -
-
- SMTP主机地址,比如 |
-
| SMTP端口 * | -
-
- SMTP主机端口,比如 |
-
| 用户名 * | -
-
- 通常为发件人邮箱地址。 - |
-
| 密码 * | -
-
- 邮箱登录密码或授权码,如不清楚,请查询对应邮件服务商文档。。 - |
-
| 发件人Email * | -
-
- 使用的发件人邮箱地址,通常和发件用户名一致。 - |
-
| 发件人名称 | -
-
- 使用的发件人名称,默认使用系统设置的产品名称。 - |
-
| 发送测试 | -[点此测试] | -
| 启用健康检查 | -
-
-
-
-
- 通过访问节点上的网站URL来确定节点是否健康。 - |
- ||||||||
| 检测URL * | -
-
-
-
拼接后的检测URL: |
- ||||||||
| 检测时间间隔 | -
- 两次检查之间的间隔。 - |
- ||||||||
| 自动上/下线IP | -
-
-
-
-
- 选中后系统会根据健康检查的结果自动标记节点IP节点的上线/下线状态,并可能自动同步DNS设置。注意:免费版的只能整体上下线整个节点,商业版的可以下线单个IP。 - |
- ||||||||
| 连续上线次数 | -
-
- 连续{{healthCheck.countUp}}次检查成功后自动恢复上线。 - |
- ||||||||
| 连续下线次数 | -
-
- 连续{{healthCheck.countDown}}次检查失败后自动下线。 - |
- ||||||||
| 允许的状态码 | -
- 允许检测URL返回的状态码列表。 - |
- ||||||||
| 超时时间 | -
- 读取检测URL超时时间。 - |
- ||||||||
| 连续尝试次数 | -
-
- 如果读取检测URL失败后需要再次尝试的次数。 - |
- ||||||||
| 每次尝试间隔 | -
- 如果读取检测URL失败后再次尝试时的间隔时间。 - |
- ||||||||
| 终端信息(User-Agent) | -
-
- 发送到服务器的User-Agent值,不填写表示使用默认值。 - |
- ||||||||
| 只基础请求 | -
- 只做基础的请求,不处理反向代理(不检查源站)、WAF等。 - |
- ||||||||
| 记录访问日志 | -
- 记录健康检查的访问日志。 - |
- ||||||||
{{message}}
[{{log.createdTime}}][{{log.createdTime}}]-[{{log.tag}}]{{log.description}} 共{{log.count}}条 {{log.server.name}}
| 参数 | -
-
- {{param.description}} - |
-
| 操作符 | -- - | -
| {{param.valueName}} | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %
-
-
-
-
-
-
-
- %
-
-
-
-
-
-
-
-
-
-
- /秒
-
- |
-
{{currentAction.description}}
- -接收通知的URL。
-| 阈值 | -动作 | -||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
| 使用的DNS解析库 | -
-
- 边缘节点使用的DNS解析库。修改此项配置后,需要重启节点进程才会生效。 |
-
| 对象类型 | -网站 | -||||
| 网站列表 | -
- 加载中...
- 暂时还没有可选的网站。
-
|
-
| 对象类型 | +网站 | +||||
| 网站列表 | +
+ 加载中...
+ 暂时还没有可选的网站。
+
|
+
| 主集群 | +
+
+
+
+
+ 多个集群配置有冲突时,优先使用主集群配置。 + |
+
| 从集群 | +
+
+
+
+
+ |
+
功能说明:此功能为试验性质,目前仅能防御简单的DDoS攻击,试验期间建议仅在被攻击时启用,仅支持已安装
| 启用DDoS防护 | +
+ |
+
| 单节点TCP最大连接数 | +
+ 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 + |
+
| 单IP TCP最大连接数 | +
+ 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 + |
+
| 单IP TCP新连接速率(分钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| 单IP TCP新连接速率(秒钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| TCP端口列表 | +
+ 在这些端口上使用当前配置。默认为80和443两个端口。 + |
+
| IP白名单 | +
+ 在白名单中的IP不受当前设置的限制。 + |
+
| 启用健康检查 | +
+
+
+
+
+ 通过访问节点上的网站URL来确定节点是否健康。 + |
+ ||||||||
| 检测URL * | +
+
+
+
拼接后的检测URL: |
+ ||||||||
| 检测时间间隔 | +
+ 两次检查之间的间隔。 + |
+ ||||||||
| 自动上/下线IP | +
+
+
+
+
+ 选中后系统会根据健康检查的结果自动标记节点IP节点的上线/下线状态,并可能自动同步DNS设置。注意:免费版的只能整体上下线整个节点,商业版的可以下线单个IP。 + |
+ ||||||||
| 连续上线次数 | +
+
+ 连续{{healthCheck.countUp}}次检查成功后自动恢复上线。 + |
+ ||||||||
| 连续下线次数 | +
+
+ 连续{{healthCheck.countDown}}次检查失败后自动下线。 + |
+ ||||||||
| 允许的状态码 | +
+ 允许检测URL返回的状态码列表。 + |
+ ||||||||
| 超时时间 | +
+ 读取检测URL超时时间。 + |
+ ||||||||
| 连续尝试次数 | +
+
+ 如果读取检测URL失败后需要再次尝试的次数。 + |
+ ||||||||
| 每次尝试间隔 | +
+ 如果读取检测URL失败后再次尝试时的间隔时间。 + |
+ ||||||||
| 终端信息(User-Agent) | +
+
+ 发送到服务器的User-Agent值,不填写表示使用默认值。 + |
+ ||||||||
| 只基础请求 | +
+ 只做基础的请求,不处理反向代理(不检查源站)、WAF等。 + |
+ ||||||||
| 记录访问日志 | +
+ 记录健康检查的访问日志。 + |
+ ||||||||
[{{log.createdTime}}][{{log.createdTime}}]+[{{log.tag}}]{{log.description}} 共{{log.count}}条 {{log.server.name}}
{{message}}
| 使用的DNS解析库 | +
+
+ 边缘节点使用的DNS解析库。修改此项配置后,需要重启节点进程才会生效。 |
+
|
+
+
+
+
+ |
+ IP | +类型 | +级别 | +过期时间 | +备注 | +操作 | +
|---|---|---|---|---|---|---|
|
+
+
+
+
+ |
+
+
+
+ {{item.region}}
+ | {{item.isp}}
+
+ {{item.isp}}
+
+
+ 添加于 {{item.createdTime}}
+
+ @
+
+ [黑白灰名单:{{item.list.name}}]
+ [黑白灰名单:{{item.list.name}}
+
+
+
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+
+
+ [策略:{{item.policy.name}}]
+
+
+
+
+
+ |
+ + IPv4 + IPv4 + IPv6 + 所有IP + | ++ {{item.eventLevelName}} + - + | +
+
+ {{item.expiredTime}}
+
+ 不过期
+
+ 已过期
+
+
+ {{formatSeconds(item.lifeSeconds)}}
+ 已过期
+
+ |
+ + {{item.reason}} + - + + + + + | ++ 日志 + 修改 + 删除 + | +
功能说明:此功能为试验性质,目前仅能防御简单的DDoS攻击,试验期间建议仅在被攻击时启用,仅支持已安装
| 启用DDoS防护 | -
- |
-
| 单节点TCP最大连接数 | -
- 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 - |
-
| 单IP TCP最大连接数 | -
- 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 - |
-
| 单IP TCP新连接速率(分钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| 单IP TCP新连接速率(秒钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| TCP端口列表 | -
- 在这些端口上使用当前配置。默认为80和443两个端口。 - |
-
| IP白名单 | -
- 在白名单中的IP不受当前设置的限制。 - |
-
| 主集群 | -
-
-
-
-
- 多个集群配置有冲突时,优先使用主集群配置。 - |
-
| 从集群 | -
-
-
-
-
- |
-
| 阈值 | +动作 | +||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
{{currentAction.description}}
+ +接收通知的URL。
+| 参数 | +
+
+ {{param.description}} + |
+
| 操作符 | ++ + | +
| {{param.valueName}} | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %
+
+
+
+
+
+
+
+ %
+
+
+
+
+
+
+
+
+
+
+ /秒
+
+ |
+
| 启用 | +
+ |
+
| 只记录失败查询 | +
+ 选中后,表示只记录查询失败的日志。 + |
+
| 包含未添加的域名 | +
+ 选中后,表示日志中包含对没有在系统里创建的域名访问。 + |
+
| 记录名 | +记录类型 | +线路 | +记录值 | +TTL | +操作 | +
|---|---|---|---|---|---|
| + + | ++ + | +
+ |
+ + + | +
+
+
+ 秒
+
+ |
+ + + | +
| 启用 | +
+ |
+
| 单节点TCP最大连接数 | +
+ 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 + |
+
| 单IP TCP最大连接数 | +
+ 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 + |
+
| 单IP TCP新连接速率(分钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| 单IP TCP新连接速率(秒钟) | +
+
+
+
+
+
+
+
+
+ 屏蔽
+
+
+
+
+
+ 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 + |
+
| TCP端口列表 | +
+ 在这些端口上使用当前配置。默认为53端口。 + |
+
| IP白名单 | +
+ 在白名单中的IP不受当前设置的限制。 + |
+
| 选择类型 * | +启用当前记录健康检查 |
-
+ |
+
| 检测端口 | +
+
+ 默认{{parentConfig.port}}
+ [修改]
+
+
+
+ [使用默认]
+
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
|
| 选择线路 * | +超时时间 |
-
+
+ 默认{{parentConfig.timeoutSeconds}}秒
+ [修改]
+
+
+
+ [使用默认]
+
+
+
+ 秒
+
+ |
| 选择省/州 | +||
| 默认连续上线次数 | - + + 默认{{parentConfig.countUp}}次 + [修改] + + |
| 启用健康检查 | +
+ 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 + |
+
| 默认检测端口 | +
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
+
| 默认超时时间 | +
+
+
+ 秒
+
+ |
+
| 默认连续上线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 + |
+
| 默认连续下线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 + |
+
| 启用 | -
- |
-
| 只记录失败查询 | -
- 选中后,表示只记录查询失败的日志。 - |
-
| 包含未添加的域名 | -
- 选中后,表示日志中包含对没有在系统里创建的域名访问。 - |
-
| 启用健康检查 | -
- 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 - |
-
| 默认检测端口 | -
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 默认超时时间 | -
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -
-
-
- 次
-
- 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 - |
-
| 默认连续下线次数 | -
-
-
- 次
-
- 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 - |
-
功能说明:此功能为试验性质,目前仅能防御简单的DDoS攻击,试验期间建议仅在被攻击时启用,仅支持已安装
| 启用 | -
- |
-
| 单节点TCP最大连接数 | -
- 单个节点可以接受的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnections}}。 - |
-
| 单IP TCP最大连接数 | -
- 单个IP可以连接到节点的TCP最大连接数。如果为0,则默认为{{defaultConfigs.tcpMaxConnectionsPerIP}};最小值为{{defaultConfigs.tcpMinConnectionsPerIP}}。 - |
-
| 单IP TCP新连接速率(分钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每分钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsMinutelyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinMinutelyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| 单IP TCP新连接速率(秒钟) | -
-
-
-
-
-
-
-
-
- 屏蔽
-
-
-
-
-
- 单个IP每秒钟可以创建TCP新连接的数量。如果为0,则默认为{{defaultConfigs.tcpNewConnectionsSecondlyRate}};最小值为{{defaultConfigs.tcpNewConnectionsMinSecondlyRate}}。如果没有填写屏蔽时间,则只丢弃数据包。 - |
-
| TCP端口列表 | -
- 在这些端口上使用当前配置。默认为53端口。 - |
-
| IP白名单 | -
- 在白名单中的IP不受当前设置的限制。 - |
-
| 启用当前记录健康检查 | -
- |
-
| 检测端口 | -
-
- 默认{{parentConfig.port}}
- [修改]
-
-
-
-
- [使用默认]
-
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 超时时间 | -
-
- 默认{{parentConfig.timeoutSeconds}}秒
- [修改]
-
-
-
-
- [使用默认]
-
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -- - 默认{{parentConfig.countUp}}次 - [修改] - - - | -
| 默认连续下线次数 | -- - 默认{{parentConfig.countDown}}次 - [修改] - - - | -
| 记录名 | -记录类型 | -线路 | -记录值 | -TTL | -操作 | -
|---|---|---|---|---|---|
| - - | -- - | -
- |
- - - | -
-
-
- 秒
-
- |
- - - | -
| 选择类型 * | ++ + | +
| 选择线路 * | ++ + | +
| 选择省/州 | ++ + | +
| 带宽下限 * | +
+
+
+
+
+
+
+
+
+ |
+
| 带宽上限 * | +
+
+
+
+
+
+
+
+
+ 如果填0,表示上不封顶。 + |
+
| 单位价格 | +
+
+
+ 元/Mbps
+
+ 和总价格二选一。如果设置了单位价格,那么"总价格 = 单位价格 x 带宽/Mbps"。 + |
+
| 总价格 | +
+
+
+ 元
+
+ 固定的总价格,和单位价格二选一。 + |
+
| 带宽百分位 * | +
+
+
+ th
+
+ 带宽计费位置,在1-100之间。 + |
+
| 基础带宽费用 | +
+
+
+ 元/Mbps
+
+ 没有定义带宽阶梯价格时,使用此价格。 + |
+
| 带宽阶梯价格 | +
+ |
+
| 支持按区域带宽计费 | +
+ 选中后,表示可以根据节点所在区域设置不同的带宽价格。 + |
+
| 带宽算法 | +
+
+ 按在计时时间段内(5分钟)最高带宽峰值计算,比如5分钟内最高的某个时间点带宽为100Mbps,那么就认为此时间段内的峰值带宽为100Mbps。修改此选项会同时影响到用量统计图表。 +按在计时时间段内(5分钟)平均带宽计算,即此时间段内的总流量除以时间段的秒数,比如5分钟(300秒)内总流量600MiB,那么带宽即为 |
+
| 带宽下限 * | -
-
-
-
-
-
-
-
-
- |
-
| 带宽上限 * | -
-
-
-
-
-
-
-
-
- 如果填0,表示上不封顶。 - |
-
| 单位价格 | -
-
-
- 元/Mbps
-
- 和总价格二选一。如果设置了单位价格,那么"总价格 = 单位价格 x 带宽/Mbps"。 - |
-
| 总价格 | -
-
-
- 元
-
- 固定的总价格,和单位价格二选一。 - |
-
| 带宽百分位 * | -
-
-
- th
-
- 带宽计费位置,在1-100之间。 - |
-
| 基础带宽费用 | -
-
-
- 元/Mbps
-
- 没有定义带宽阶梯价格时,使用此价格。 - |
-
| 带宽阶梯价格 | -
- |
-
| 支持按区域带宽计费 | -
- 选中后,表示可以根据节点所在区域设置不同的带宽价格。 - |
-
| 带宽算法 | -
-
- 按在计时时间段内(5分钟)最高带宽峰值计算,比如5分钟内最高的某个时间点带宽为100Mbps,那么就认为此时间段内的峰值带宽为100Mbps。修改此选项会同时影响到用量统计图表。 -按在计时时间段内(5分钟)平均带宽计算,即此时间段内的总流量除以时间段的秒数,比如5分钟(300秒)内总流量600MiB,那么带宽即为 |
-
| 启用统计 | -
-
-
-
-
- |
-
| 启用HTTP/2 | -
-
-
-
-
- |
- |
| 启用HTTP/3 | -
-
-
-
-
- |
- |
| 设置证书 | -
-
-
- 选择或上传证书后HTTPSTLS服务才能生效。
-
-
-
- |
-
-
- |
-
- |
- |
| TLS最低版本 | -- - | -|
| 加密算法套件(CipherSuites) | -
-
-
-
-
-
-
-
-
-
-
-
- 点击可选套件添加。 - |
- |
| 开启HSTS | -
-
-
-
-
- - 开启后,会自动在响应Header中加入 - Strict-Transport-Security: - ... - max-age={{hsts.maxAge}} - ; includeSubDomains - ; preload - - - 修改 - - - |
- |
| HSTS有效时间(max-age) | -
-
-
-
-
-
-
- 秒
-
- {{hsts.days}}天
- - [1年/365天] - [6个月/182.5天] - [1个月/30天] - - |
- |
| HSTS包含子域名(includeSubDomains) | -
-
-
-
-
- |
- |
| HSTS预加载(preload) | -
-
-
-
-
- |
- |
| HSTS生效的域名 | -
-
-
-
-
-
-
-
-
- 取消
-
-
-
-
- 如果没有设置域名的话,则默认支持所有的域名。 - |
- |
| OCSP Stapling | -选中表示启用OCSP Stapling。 - |
- |
| 客户端认证方式 | -- - | -|
| 客户端认证CA证书 | -
-
-
-
- 用来校验客户端证书以增强安全性,通常不需要设置。 - |
- |
暂时还没有缓存条件。
-| 缓存条件 | -缓存时间 | -
|---|---|
|
- |
- - {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} - 不缓存 - | -
暂时还没有URL跳转规则。
-| - | 跳转前 | -- | 跳转后 | -HTTP状态码 | -状态 | -操作 | -
|---|---|---|---|---|---|---|
| - |
-
- {{redirect.beforeURL}}
-
-
-
-
- 所有域名
-
- {{redirect.domainsBefore[0]}}
- {{redirect.domainsBefore[0]}}等{{redirect.domainsBefore.length}}个域名
-
-
-
-
-
- 所有端口
-
- {{redirect.portsBefore.join(", ")}}
- {{redirect.portsBefore.slice(0, 5).join(", ")}}等{{redirect.portsBefore.length}}个端口
-
-
-
-
-
-
-
- |
- -> | -- {{redirect.afterURL}} - {{redirect.domainAfter}} - {{redirect.portAfter}} - | -- {{redirect.status}} - 默认 - | -- 修改 - 删除 - | -
所有规则匹配顺序为从上到下,可以拖动左侧的排序。
+Vue.component("email-sender", { + props: ["value", "name"], + data: function () { + let value = this.value + if (value == null) { + value = { + isOn: false, + smtpHost: "", + smtpPort: 0, + username: "", + password: "", + fromEmail: "", + fromName: "" + } + } + let smtpPortString = value.smtpPort.toString() + if (smtpPortString == "0") { + smtpPortString = "" + } + + return { + config: value, + smtpPortString: smtpPortString + } + }, + watch: { + smtpPortString: function (v) { + let port = parseInt(v) + if (!isNaN(port)) { + this.config.smtpPort = port + } + } + }, + methods: { + test: function () { + window.TESTING_EMAIL_CONFIG = this.config + teaweb.popup("/users/setting/emailTest", { + height: "36em" + }) + } + }, + template: `| 启用 | +|
| SMTP地址 * | +
+
+ SMTP主机地址,比如 |
+
| SMTP端口 * | +
+
+ SMTP主机端口,比如 |
+
| 用户名 * | +
+
+ 通常为发件人邮箱地址。 + |
+
| 密码 * | +
+
+ 邮箱登录密码或授权码,如不清楚,请查询对应邮件服务商文档。。 + |
+
| 发件人Email * | +
+
+ 使用的发件人邮箱地址,通常和发件用户名一致。 + |
+
| 发件人名称 | +
+
+ 使用的发件人名称,默认使用系统设置的产品名称。 + |
+
| 发送测试 | +[点此测试] | +
| 启用 | +|
| 发送渠道 | +
+
+ 通过HTTP接口的方式调用你的自定义发送短信接口。 +通过阿里云短信服务发送短信接口;目前仅支持发送验证码。 +通过腾讯云短信服务发送短信接口;目前仅支持发送验证码。 + |
+
| HTTP接口的URL地址 * | +
+
+ 接收发送短信请求的URL,必须以 |
+
| HTTP接口的请求方法 | +
+
+ 以在URL参数中加入mobile、body和code三个参数( 通过POST表单发送mobile、body和code三个参数( |
+
| 签名名称 * | +
+ 在阿里云短信服务 “签名管理” 中添加并通过审核后才能使用。 + |
+
| 模板CODE * | +
+
+ 在阿里云短信服务 “模板管理” 中添加并通过审核后才能使用。 + |
+
| 模板中验证码变量名称 * | +
+
+ 默认为 |
+
| AccessKey ID * | +
+
+ 在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 + |
+
| AccessKey Secret * | +
+
+ 和表单中的AccessKey ID对应,在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 + |
+
| SDK应用ID * | +
+
+ 在腾讯云 -- 短信 -- 应用管理 -- 应用列表中可以查看。 + |
+
| 签名内容 * | +
+
+ 比如“腾讯云”,在腾讯云 -- 短信 -- 签名管理中可以查看。 + |
+
| 正文模板ID * | +
+
+ 在腾讯云 -- 短信 -- 正文模板管理中可以查看。 + |
+
| 密钥SecretId * | +
+
+ 同SecretKey一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 + |
+
| 密钥SecretKey * | +
+
+ 同SecretId一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 + |
+
| 发送测试 | +[点此测试] | +
支持普通域名(
只支持普通域名(
{{description}}
+| 启用 | +
+ 启用后,WAF将会尝试自动检测并阻止SYN Flood攻击。此功能需要节点已安装并启用nftables或Firewalld。 + |
+
| 空连接次数 | +
+
+
+ 次/分钟
+
+ 超过此数字的"空连接"将被视为SYN Flood攻击,为了防止误判,此数值默认不小于5。 + |
+
| 封禁时长 | +
+
+
+ 秒
+
+ |
+
| 忽略局域网访问 | +
+ |
+
| 启用访问日志 | +
+
+
+
+
+ |
+
| 基础信息 | +默认记录客户端IP、请求URL等基础信息。 |
+
| 高级信息 | +
+
+
+
+
+ 在基础信息之外要存储的信息。 + 记录"请求Body"将会显著消耗更多的系统资源,建议仅在调试时启用,最大记录尺寸为2MiB。 + + |
+
| 要存储的访问日志状态码 | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
| 记录客户端中断日志 | +
+
+
+
+
+ 以 |
+
| 只记录WAF相关日志 | +
+ 选中后只记录WAF相关的日志。通过此选项可有效减少访问日志数量,降低网络带宽和存储压力。 + |
+
| 启用鉴权 | +
+
+
+
+
+ |
+
| 名称 | +鉴权方法 | +参数 | +状态 | +操作 | +
|---|---|---|---|---|
| {{ref.authPolicy.name}} | ++ {{methodName(ref.authPolicy.type)}} + | +
+ {{ref.authPolicy.params.users.length}}个用户
+
+ [{{ref.authPolicy.params.method}}]
+ {{ref.authPolicy.params.url}}
+
+ {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
+
+
+
+ |
+
+ |
+ + 修改 + 删除 + | +
| 全局缓存策略 | +
+ {{vCachePolicy.name}}
+ 当前集群没有设置缓存策略,当前配置无法生效。
+ 使用当前网站所在集群的设置。 + |
+
| 启用缓存 | +
+
+
+
+
+ |
+ ||||
| 缓存主域名 | +
+ 默认 [修改]
+ 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
+
+
+
+
|
+ ||||
| + 收起选项更多选项 + | +|||||
| 使用默认缓存条件 | +
+ 选中后使用系统全局缓存策略中已经定义的默认缓存条件。 + |
+ ||||
| 添加X-Cache报头 | +
+ 选中后自动在响应报头中增加 |
+ ||||
| 添加Age Header | +
+ 选中后自动在响应Header中增加 |
+ ||||
| 支持源站控制有效时间 | +
+ 选中后表示支持源站在Header中设置的 |
+ ||||
| 允许PURGE | +
+ 允许使用PURGE方法清除某个URL缓存。 + |
+ ||||
| PURGE Key * | +
+
+ [随机生成]。需要在PURGE方法调用时加入 |
+ ||||
| 启用请求限制 | -
- |
-
| 最大并发连接数 | -
-
- 当前网站最大并发连接数,超出此限制则响应用户 |
-
| 单IP最大并发连接数 | -
-
- 单IP最大连接数,统计单个IP总连接数时不区分网站,超出此限制则响应用户 |
-
| 单连接带宽限制 | -
- 客户端单个请求每秒可以读取的下行流量。 - |
-
| 单请求最大尺寸 | -
- 单个请求能发送的最大内容尺寸。 - |
-
| 全局WAF策略 | -
- {{vFirewallPolicy.name}} [{{vFirewallPolicy.modeInfo.name}}]
- 当前集群没有设置WAF策略,当前配置无法生效。
- 当前网站所在集群的设置。 - |
-
| 启用Web防火墙 | -
- 选中后,表示启用当前网站的WAF功能。 - |
-
| 人机识别验证方式 | -
-
- 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 -{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 - |
-
| 启用系统全局规则 | -
- 选中后,表示使用系统全局WAF策略中定义的规则。 - |
-
| 对象 | -数值 | -占比 | -
|---|---|---|
| " + v.keys[0] + " | " + value + " | " - let percent = 0 - if (v.total > 0) { - percent = Math.round((v.value * 100 / v.total) * 100) / 100 - } - table += "" + percent + "% | "
- table += "
| 全局缓存策略 | -
- {{vCachePolicy.name}}
- 当前集群没有设置缓存策略,当前配置无法生效。
- 使用当前网站所在集群的设置。 - |
-
| 启用缓存 | -
-
-
-
-
- |
- ||||
| 缓存主域名 | -
- 默认 [修改]
- 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
-
-
-
-
|
- ||||
| - 收起选项更多选项 - | -|||||
| 使用默认缓存条件 | -
- 选中后使用系统全局缓存策略中已经定义的默认缓存条件。 - |
- ||||
| 添加X-Cache报头 | -
- 选中后自动在响应报头中增加 |
- ||||
| 添加Age Header | -
- 选中后自动在响应Header中增加 |
- ||||
| 支持源站控制有效时间 | -
- 选中后表示支持源站在Header中设置的 |
- ||||
| 允许PURGE | -
- 允许使用PURGE方法清除某个URL缓存。 - |
- ||||
| PURGE Key * | -
-
- [随机生成]。需要在PURGE方法调用时加入 |
- ||||
暂时还没有缓存条件。
+| 缓存条件 | +缓存时间 | +
|---|---|
|
+ |
+ + {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} + 不缓存 + | +
| 通用Header列表 | -
- 需要检查的Header列表。 - |
-
| Header值超出长度 | -
-
-
- 字节
-
- 超出此长度认为匹配成功,0表示不限制。 - |
-
| 统计对象组合 * | -
- |
-
| 统计周期 * | -
-
-
- 秒
-
- |
-
| 阈值 * | -
-
- 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 来源域名允许为空 | -
- 允许不带来源的访问。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 源站地址 | -权重 | -状态 | -操作 | -||||
|---|---|---|---|---|---|---|---|
|
- {{origin.addr}}
-
-
- |
- {{origin.weight}} | +
| 启用过时缓存 |
- |
+
| 有效期 |
- 修改
- 停用启用
- 删除
+ 缓存在过期之后,仍然保留的时间。 + |
+
| 状态码 | +在这些状态码出现时使用过时缓存,默认支持 |
+
| 支持stale-if-error | +
+ 选中后,支持在Cache-Control中通过 |
| 启用CC无感防护 | +
+ |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 启用GET302校验 | +
+ 选中后,表示自动通过GET302方法来校验客户端。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) + |
+
| 使用自定义拦截阈值 | +
+ |
+
| 自定义拦截阈值设置 | +
+
+
+
+
+ 单IP每5秒最多
+
+ 请求
+
+
+
+
+ 单IP每60秒
+
+ 请求
+
+
+
+
+ 单IP每300秒
+
+ 请求
+
+ |
+
| 启用字符编码 | +
+
+
+
+
+ |
+
| 选择字符编码 | ++ | +
| 强制替换 | +
+ 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 + |
+
| 字符编码大写 | +
+
+
+
+
+ 选中后将指定的字符编码转换为大写,比如默认为 |
+
| 合并重复的路径分隔符 | +
+
+
+
+
+ 合并URL中重复的路径分隔符为一个,比如 |
+
| 启用内容压缩 | +
+
+
+
+
+ |
+
| 支持的扩展名 | +
+ 含有这些扩展名的URL将会被压缩,不区分大小写。 + |
+
| 例外扩展名 | +
+ 含有这些扩展名的URL将不会被压缩,不区分大小写。 + |
+
| 支持的MimeType | +
+ 响应的Content-Type里包含这些MimeType的内容将会被压缩。 + |
+
| 压缩算法 | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择支持的压缩算法和优先顺序,拖动图表排序。 + |
+
| 支持已压缩内容 | +
+ 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 + |
+
| 内容最小长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 内容最大长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 支持Partial Content |
+
+ 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
+完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
+参数值除以10的余数,在0-9之间。
+参数值除以100的余数,在0-99之间。
+和参数值一致的字符串。
+和参数值不一致的字符串。
+参数值的前缀。
+参数值的后缀为此字符串。
+参数值包含此字符串。
+参数值不包含此字符串。
+添加参数值列表。
+添加参数值列表。
+添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
+参数中IP转换成整数后除以10的余数,在0-9之间。
+参数中IP转换成整数后除以100的余数,在0-99之间。
+选中后表示对比时忽略参数值的大小写。
+| HTML优化 | +启用页面动态加密 |
-
+
- 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 +启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 |
| HTML例外URL | +排除 URL |
- 如果填写了例外URL,表示这些URL跳过不做处理。 +这些 URL 将跳过加密处理,支持正则表达式。 |
| HTML限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
- |
| Javascript优化 | -
-
-
-
-
- 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 - |
-
| Javascript例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| Javascript限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| CSS优化 | -
-
-
-
-
- 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 - |
-
| CSS例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| CSS限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| HTML 加密 | +
+
+
+
+
+ 加密 HTML 页面中的 JavaScript 脚本。 + |
+
| 加密内联脚本 | +
+
+
+
+
+ 加密 HTML 中的内联 <script> 标签内容。 + |
+
| 加密外部脚本 | +
+
+
+
+
+ 加密通过 src 属性引入的外部 JavaScript 文件。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| JavaScript 文件加密 | +
+
+
+
+
+ 加密独立的 JavaScript 文件(.js 文件)。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| 服务器端密钥 | +
+
+ 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! + |
+
| 时间分片(秒) | +
+
+ 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 + |
+
| IP CIDR 前缀长度 | +
+
+ 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 + |
+
| 简化 User-Agent | +
+
+
+
+
+ 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 + |
+
| 启用缓存 | +
+
+
+
+
+ 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 + |
+
| 缓存 TTL(秒) | +
+
+ 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 + |
+
| 最大缓存条目数 | +
+
+ 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 + |
+
| 启用 | +启用后,将会在响应的Header中添加 |
+
| 覆盖源站设置 | +
+ 选中后,会覆盖源站Header中已有的 |
+
| 自动计算时间 | +根据已设置的缓存有效期进行计算。 + |
+
| 强制缓存时间 | +
+ 从客户端访问的时间开始要缓存的时长。 + |
+
| 启用Websocket | +启用配置 |
-
+
|
| 允许所有来源域(Origin) | +Fastcgi服务 |
-
-
-
-
- 选中表示允许所有的来源域。 - |
-
| 允许的来源域列表(Origin) | -- | |
| 传递请求来源域 | -
-
-
-
-
- 选中后,表示把接收到的请求中的 |
- |
| 指定传递的来源域 | -
-
- 指定向源站传递的Origin字段值。 - |
- |
| 握手超时时间(Handshake) | -
-
-
-
-
-
-
- 秒
-
- 0表示使用默认的时间设置。 - |
-
暂时还没有重写规则。
-| - | 匹配规则 | -转发目标 | -转发方式 | -状态 | -操作 | -
|---|---|---|---|---|---|
| - | {{rule.pattern}}
- - |
- {{rule.replace}} | -- 隐式 - 显示 - | -
- |
- - 修改 - 删除 - | -
拖动左侧的图标可以对重写规则进行排序。
- -| 启用5秒盾 | -
- |
-
| 验证有效期 | -
-
-
- 秒
-
- 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 - |
-
| 加入IP白名单 | -
- 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 - |
-
| 匹配条件 | -
- |
-
| 启用过时缓存 | -
- |
-
| 有效期 | -
- 缓存在过期之后,仍然保留的时间。 - |
-
| 状态码 | -在这些状态码出现时使用过时缓存,默认支持 |
-
| 支持stale-if-error | -
- 选中后,支持在Cache-Control中通过 |
-
支持普通域名(
只支持普通域名(
| 启用防盗链 | -
-
-
-
-
- 选中后表示开启防盗链。 - |
-
| 允许直接访问网站 | -
- 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的其他来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 - |
-
| 自动跳转到HTTPS | -
-
-
-
-
- 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
|
-
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | -- - | -
| 跳转后域名或IP地址 | -
-
- 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 - |
-
| 端口 | -
-
- 默认端口为443。 - |
-
| 允许的域名 | -
- 如果填写了允许的域名,那么只有这些域名可以自动跳转。 - |
-
| 排除的域名 | -
- 如果填写了排除的域名,那么这些域名将不跳转。 - |
-
| 状态码 | ++ + | +
| 提示内容 | ++ + | +
| 封禁时长 | +
+
+
+ 秒
+
+ 触发阻止动作时,封禁客户端IP的时间。 + |
+
| 最大封禁时长 | +
+
+
+ 秒
+
+ 如果最大封禁时长大于封禁时长({{timeout}}秒),那么表示每次封禁的时候,将会在这两个时长数字之间随机选取一个数字作为最终的封禁时长。 + |
+
| 失败全局封禁 | +
+ 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 + |
+
| 默认验证方式 | +
+
+ {{captchaDef.description}} + |
+
| 有效时间 | +
+
+
+ 秒
+
+ 验证通过后在这个时间内不再验证,默认600秒。 + |
+
| 最多失败次数 | +
+
+
+ 次
+
+ 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 + |
+
| 失败拦截时间 | +
+
+
+ 秒
+
+ 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 + |
+
| 失败全局封禁 | +
+ 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 + |
+
| 验证码中数字个数 | ++ + | +
| 定制UI | +|
| 页面标题 | ++ + | +
| 按钮标题 | +
+
+ 类似于 |
+
| 显示请求ID | +
+ 在界面上显示请求ID,方便用户报告问题。 + |
+
| CSS样式 | ++ + | +
| 页头提示 | +
+
+ 类似于 |
+
| 页尾提示 | +
+
+ 支持HTML。 + |
+
| 页面模板 | +
+
+ 警告:{{uiBodyWarning}}模板中必须包含\${body}表示验证码表单!整个页面的模板,支持HTML,其中必须使用 |
+
| 允许用户使用极验 | +选中后,表示允许用户在WAF设置中选择极验。 + |
+
| 极验-验证ID * | +
+
+ 在极验控制台--业务管理中获取。 + |
+
| 极验-验证Key * | +
+
+ 在极验控制台--业务管理中获取。 + |
+
| 全局WAF策略 | +
+ {{vFirewallPolicy.name}} [{{vFirewallPolicy.modeInfo.name}}]
+ 当前集群没有设置WAF策略,当前配置无法生效。
+ 当前网站所在集群的设置。 + |
+
| 启用Web防火墙 | +
+ 选中后,表示启用当前网站的WAF功能。 + |
+
| 人机识别验证方式 | +
+
+ 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 +{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 + |
+
| 启用系统全局规则 | +
+ 选中后,表示使用系统全局WAF策略中定义的规则。 + |
+
| 有效时间 | +
+
+
+ 秒
+
+ 验证通过后在这个时间内不再验证,默认3600秒。 + |
+
| 最多失败次数 | +
+
+
+ 次
+
+ 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 + |
+
| 失败拦截时间 | +
+
+
+ 秒
+
+ 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 + |
+
| 失败全局封禁 | +
+ 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 + |
+
| 状态码 * | ++ |
| 网页内容 | ++ + + | +
| 通用Header列表 | +
+ 需要检查的Header列表。 + |
+
| Header值超出长度 | +
+
+
+ 字节
+
+ 超出此长度认为匹配成功,0表示不限制。 + |
+
| 统计对象组合 * | +
+ |
+
| 统计周期 * | +
+
+
+ 秒
+
+ |
+
| 阈值 * | +
+
+ 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 来源域名允许为空 | +
+ 允许不带来源的访问。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 启用鉴权 | +启用Gzip压缩 |
-
+
|
| 压缩级别 | +
+
+ 级别越高,压缩比例越大。 + |
+ |
| Gzip内容最小长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+ |
| Gzip内容最大长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+ |
| 匹配条件 | +
+ |
+
| 名称 | -鉴权方法 | -参数 | -状态 | -操作 | -
|---|---|---|---|---|
| {{ref.authPolicy.name}} | -- {{methodName(ref.authPolicy.type)}} - | -
- {{ref.authPolicy.params.users.length}}个用户
-
- [{{ref.authPolicy.params.method}}]
- {{ref.authPolicy.params.url}}
-
- {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
-
-
-
- |
-
- |
- - 修改 - 删除 - | -
| 合并重复的路径分隔符 | -
-
-
-
-
- 合并URL中重复的路径分隔符为一个,比如 |
- ||||||||||||||||||
| 启用HLS加密 | +
+ 启用后,系统会自动在 |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 + |
+
暂时还没有URL跳转规则。
+| + | 跳转前 | ++ | 跳转后 | +HTTP状态码 | +状态 | +操作 | +
|---|---|---|---|---|---|---|
| + |
+
+ {{redirect.beforeURL}}
+
+
+
+
+ 所有域名
+
+ {{redirect.domainsBefore[0]}}
+ {{redirect.domainsBefore[0]}}等{{redirect.domainsBefore.length}}个域名
+
+
+
+
+
+ 所有端口
+
+ {{redirect.portsBefore.join(", ")}}
+ {{redirect.portsBefore.slice(0, 5).join(", ")}}等{{redirect.portsBefore.length}}个端口
+
+
+
+
+
+
+
+ |
+ -> | ++ {{redirect.afterURL}} + {{redirect.domainAfter}} + {{redirect.portAfter}} + | ++ {{redirect.status}} + 默认 + | ++ 修改 + 删除 + | +
所有规则匹配顺序为从上到下,可以拖动左侧的排序。
| HTML优化 | +
+
+
+
+
+ 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 + |
+
| HTML例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| HTML限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| Javascript优化 | +
+
+
+
+
+ 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 + |
+
| Javascript例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| Javascript限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| CSS优化 | +
+
+
+
+
+ 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 + |
+
| CSS例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| CSS限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
{{param.description.replace("\${optionName}", name)}}
+{{name}}名称,类似于
{{name}}参数名称,比如
| 响应状态码 | +页面类型 | +新状态码 | +例外URL | +限制URL | +操作 | +
|---|---|---|---|---|---|
| + + {{page.status[0]}} + {{page.status}} + + + + | +
+
+ {{page.url}}
+
+
+
+
+ {{page.url}}
+
+
+
+
+ [HTML内容]
+
+
+
+ |
+ + {{page.newStatus}} + 保持 + | +
+
+ {{urlPattern.pattern}}
+
+ -
+ |
+
+
+ {{urlPattern.pattern}}
+
+ -
+ |
+ + 修改 + 删除 + | +
| 自动跳转到HTTPS | +
+
+
+
+
+ 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
|
+
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | ++ + | +
| 跳转后域名或IP地址 | +
+
+ 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 + |
+
| 端口 | +
+
+ 默认端口为443。 + |
+
| 允许的域名 | +
+ 如果填写了允许的域名,那么只有这些域名可以自动跳转。 + |
+
| 排除的域名 | +
+ 如果填写了排除的域名,那么这些域名将不跳转。 + |
+
| 启用防盗链 | +
+
+
+
+
+ 选中后表示开启防盗链。 + |
+
| 允许直接访问网站 | +
+ 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的其他来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 + |
+
| 启用访客IP设置 | +
+
+
+
+
+ 选中后,表示使用自定义的请求变量获取客户端IP。 + |
+
| 获取IP方式 * | +
+
+ {{option.description}} + |
+
| 请求报头 * | +
+
+ 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
+
| 读取IP变量值 * | +
+
+ 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 |
+
| 启用请求限制 | +
+ |
+
| 最大并发连接数 | +
+
+ 当前网站最大并发连接数,超出此限制则响应用户 |
+
| 单IP最大并发连接数 | +
+
+ 单IP最大连接数,统计单个IP总连接数时不区分网站,超出此限制则响应用户 |
+
| 单连接带宽限制 | +
+ 客户端单个请求每秒可以读取的下行流量。 + |
+
| 单请求最大尺寸 | +
+ 单个请求能发送的最大内容尺寸。 + |
+
| 启用页面动态加密 | -
-
-
-
-
- 启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 - |
-
| 排除 URL | -
- 这些 URL 将跳过加密处理,支持正则表达式。 - |
-
| HTML 加密 | -
-
-
-
-
- 加密 HTML 页面中的 JavaScript 脚本。 - |
-
| 加密内联脚本 | -
-
-
-
-
- 加密 HTML 中的内联 <script> 标签内容。 - |
-
| 加密外部脚本 | -
-
-
-
-
- 加密通过 src 属性引入的外部 JavaScript 文件。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| JavaScript 文件加密 | -
-
-
-
-
- 加密独立的 JavaScript 文件(.js 文件)。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| 服务器端密钥 | -
-
- 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! - |
-
| 时间分片(秒) | -
-
- 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 - |
-
| IP CIDR 前缀长度 | -
-
- 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 - |
-
| 简化 User-Agent | -
-
-
-
-
- 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 - |
-
| 启用缓存 | -
-
-
-
-
- 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 - |
-
| 缓存 TTL(秒) | -
-
- 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 - |
-
| 最大缓存条目数 | -
-
- 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 - |
-
在请求刚初始化时调用,此时自定义报头等尚未生效。
+在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
+| 状态码 * | -- | ||||||||||||||||||
| 网页内容 | -- - - | -||||||||||||||||||
| + | 匹配规则 | +转发目标 | +转发方式 | +状态 | +操作 | +
|---|---|---|---|---|---|
| + | {{rule.pattern}}
+ + |
+ {{rule.replace}} | ++ 隐式 + 显示 + | +
+ |
+ + 修改 + 删除 + | +
拖动左侧的图标可以对重写规则进行排序。
+ +` }) -Vue.component("http-firewall-js-cookie-options", { - props: ["v-js-cookie-options"], - mounted: function () { - this.updateSummary() - }, - data: function () { - let options = this.vJsCookieOptions - if (options == null) { - options = { - life: 0, - maxFails: 0, - failBlockTimeout: 0, - failBlockScopeAll: false, - scope: "service" - } - } +Vue.component("http-rewrite-labels-label", { + props: ["v-class"], + template: `| 启用统计 | +
+
+
+
+
+ |
+
| 有效时间 | -
-
-
- 秒
-
- 验证通过后在这个时间内不再验证,默认3600秒。 - |
-
| 最多失败次数 | -
-
-
- 次
-
- 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 - |
-
| 失败拦截时间 | -
-
-
- 秒
-
- 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 - |
-
| 失败全局封禁 | -
- 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 - |
-
| 启用静态资源分发 | +
+
+
+
+
+ |
+
| 静态资源根目录 | +
+
+ 可以访问此根目录下的静态资源。 + |
+
| 首页文件 | +
+
+
+
+ 在URL中只有目录没有文件名时默认查找的首页文件。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示不支持通过这些URL访问。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示仅支持通过这些URL访问。 + |
+
| 排除隐藏文件 | +
+ 排除以点(.)符号开头的隐藏目录或文件,比如 |
+
| 去除URL前缀 | +
+
+ 可以把请求的路径部分前缀去除后再查找文件,比如把 /web/app/index.html 去除前缀 /web 后就变成 /app/index.html。 + |
+
| 路径解码 | +
+
+
+
+
+ 是否对请求路径进行URL解码,比如把 /Web+App+Browser.html 解码成 /Web App Browser.html 再查找文件。 + |
+
| 终止请求 | +
+
+
+
+
+ 在找不到要访问的文件的情况下是否终止请求并返回404,如果选择终止请求,则不再尝试反向代理等设置。 + |
+
| 启用内容压缩 | +启用WebP压缩 |
|
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被压缩,不区分大小写。 - |
- |
| 例外扩展名 | -
- 含有这些扩展名的URL将不会被压缩,不区分大小写。 - |
- |
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被压缩。 +选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 |
|
| 压缩算法 | +支持的扩展名 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 选择支持的压缩算法和优先顺序,拖动图表排序。 +含有这些扩展名的URL将会被转成WebP,不区分大小写。 |
| 支持已压缩内容 | +支持的MimeType |
- 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 +响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 |
| 支持Partial Content |
-
- 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 - |
- |
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
- |
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 - |
- |
| 匹配条件 |
|
+
| 启用Websocket | +
+
+
+
+
+ |
+ ||||||||||||||||||
| 允许所有来源域(Origin) | +
+
+
+
+
+ 选中表示允许所有的来源域。 + |
+ ||||||||||||||||||
| 允许的来源域列表(Origin) | +
+
+
+ 只允许在列表中的来源域名访问Websocket服务。 + |
+ ||||||||||||||||||
| 传递请求来源域 | +
+
+
+
+
+ 选中后,表示把接收到的请求中的 |
+ ||||||||||||||||||
| 指定传递的来源域 | +
+
+ 指定向源站传递的Origin字段值。 + |
+ ||||||||||||||||||
| 握手超时时间(Handshake) | +
+
+
+
+
+
+
+ 秒
+
+ 0表示使用默认的时间设置。 |
||||||||||||||||||
| 对象 | +数值 | +占比 | +
|---|---|---|
| " + v.keys[0] + " | " + value + " | " + let percent = 0 + if (v.total > 0) { + percent = Math.round((v.value * 100 / v.total) * 100) / 100 + } + table += "" + percent + "% | "
+ table += "
| 启用CC无感防护 | -
- |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 启用GET302校验 | -
- 选中后,表示自动通过GET302方法来校验客户端。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) - |
-
| 使用自定义拦截阈值 | -
- |
-
| 自定义拦截阈值设置 | -
-
-
-
-
- 单IP每5秒最多
-
- 请求
-
-
-
-
- 单IP每60秒
-
- 请求
-
-
-
-
- 单IP每300秒
-
- 请求
-
- |
-
{{description}}
+// 指标对象 +Vue.component("metric-keys-config-box", { + props: ["v-keys"], + data: function () { + let keys = this.vKeys + if (keys == null) { + keys = [] + } + return { + keys: keys, + isAdding: false, + key: "", + subKey: "", + keyDescription: "", + + keyDefs: window.METRIC_HTTP_KEYS + } + }, + watch: { + keys: function () { + this.$emit("change", this.keys) + } + }, + methods: { + cancel: function () { + this.key = "" + this.subKey = "" + this.keyDescription = "" + this.isAdding = false + }, + confirm: function () { + if (this.key.length == 0) { + return + } + + if (this.key.indexOf(".NAME") > 0) { + if (this.subKey.length == 0) { + teaweb.warn("请输入参数值") + return + } + this.key = this.key.replace(".NAME", "." + this.subKey) + } + this.keys.push(this.key) + this.cancel() + }, + add: function () { + this.isAdding = true + let that = this + setTimeout(function () { + if (that.$refs.key != null) { + that.$refs.key.focus() + } + }, 100) + }, + remove: function (index) { + this.keys.$remove(index) + }, + changeKey: function () { + if (this.key.length == 0) { + return + } + let that = this + let def = this.keyDefs.$find(function (k, v) { + return v.code == that.key + }) + if (def != null) { + this.keyDescription = def.description + } + }, + keyName: function (key) { + let that = this + let subKey = "" + let def = this.keyDefs.$find(function (k, v) { + if (v.code == key) { + return true + } + if (key.startsWith("${arg.") && v.code.startsWith("${arg.")) { + subKey = that.getSubKey("arg.", key) + return true + } + if (key.startsWith("${header.") && v.code.startsWith("${header.")) { + subKey = that.getSubKey("header.", key) + return true + } + if (key.startsWith("${cookie.") && v.code.startsWith("${cookie.")) { + subKey = that.getSubKey("cookie.", key) + return true + } + return false + }) + if (def != null) { + if (subKey.length > 0) { + return def.name + ": " + subKey + } + return def.name + } + return key + }, + getSubKey: function (prefix, key) { + prefix = "${" + prefix + let index = key.indexOf(prefix) + if (index >= 0) { + key = key.substring(index + prefix.length) + key = key.substring(0, key.length - 1) + return key + } + return "" + } + }, + template: `` +}) + +// 指标周期设置 +Vue.component("metric-period-config-box", { + props: ["v-period", "v-period-unit"], + data: function () { + let period = this.vPeriod + let periodUnit = this.vPeriodUnit + if (period == null || period.toString().length == 0) { + period = 1 + } + if (periodUnit == null || periodUnit.length == 0) { + periodUnit = "day" + } + return { + periodConfig: { + period: period, + unit: periodUnit + } + } + }, + watch: { + "periodConfig.period": function (v) { + v = parseInt(v) + if (isNaN(v) || v <= 0) { + v = 1 + } + this.periodConfig.period = v + } + }, + template: `在此周期内同一对象累积为同一数据。
+| 源站地址 | +权重 | +状态 | +操作 | +
|---|---|---|---|
|
+ {{origin.addr}}
+
+
+ |
+ {{origin.weight}} | +
+ |
+ + 修改 + 停用启用 + 删除 + | +
| 当前正在使用的算法 | +
+ {{scheduling.name}} [修改]
+ {{scheduling.description}} + |
+
| 启用字符编码 | -
-
-
-
-
- |
-
| 选择字符编码 | -- | -
| 强制替换 | -
- 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 - |
-
| 字符编码大写 | -
-
-
-
-
- 选中后将指定的字符编码转换为大写,比如默认为 |
-
| 启用 | -启用后,将会在响应的Header中添加 |
-
| 覆盖源站设置 | -
- 选中后,会覆盖源站Header中已有的 |
-
| 自动计算时间 | -根据已设置的缓存有效期进行计算。 - |
-
| 强制缓存时间 | -
- 从客户端访问的时间开始要缓存的时长。 - |
-
| 启用访问日志 | -
-
-
-
-
- |
-
| 基础信息 | -默认记录客户端IP、请求URL等基础信息。 |
-
| 高级信息 | -
-
-
-
-
- 在基础信息之外要存储的信息。 - 记录"请求Body"将会显著消耗更多的系统资源,建议仅在调试时启用,最大记录尺寸为2MiB。 - - |
-
| 要存储的访问日志状态码 | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
| 记录客户端中断日志 | -
-
-
-
-
- 以 |
-
| 只记录WAF相关日志 | -
- 选中后只记录WAF相关的日志。通过此选项可有效减少访问日志数量,降低网络带宽和存储压力。 - |
-
| 启用Gzip压缩 | -
-
-
-
-
- |
-
| 压缩级别 | -
-
- 级别越高,压缩比例越大。 - |
-
| Gzip内容最小长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| Gzip内容最大长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 匹配条件 | -
- |
-
| 启用脚本设置 | -|
| 脚本代码 | -
- - 管理员审核结果:审核通过。 - 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} - 当前脚本将在审核后生效,请耐心等待审核结果。 去审核 » - -管理员审核结果:审核通过。 -{{comment}} - |
-
| 启用访客IP设置 | -
-
-
-
-
- 选中后,表示使用自定义的请求变量获取客户端IP。 - |
+ 启用脚本设置 | +|
| 获取IP方式 * | +|||
| 脚本代码 |
-
- {{option.description}} - |
- ||
| 请求报头 * | -
-
- 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
- ||
| 读取IP变量值 * | -
-
- 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 + 管理员审核结果:审核通过。 + 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} + 当前脚本将在审核后生效,请耐心等待审核结果。 去审核 » + +管理员审核结果:审核通过。 +{{comment}} |
| 启用静态资源分发 | -
-
-
-
-
- |
-
| 静态资源根目录 | -
-
- 可以访问此根目录下的静态资源。 - |
-
| 首页文件 | -
-
-
-
- 在URL中只有目录没有文件名时默认查找的首页文件。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示不支持通过这些URL访问。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示仅支持通过这些URL访问。 - |
-
| 排除隐藏文件 | -
- 排除以点(.)符号开头的隐藏目录或文件,比如 |
-
| 去除URL前缀 | -
-
- 可以把请求的路径部分前缀去除后再查找文件,比如把 /web/app/index.html 去除前缀 /web 后就变成 /app/index.html。 - |
-
| 路径解码 | -
-
-
-
-
- 是否对请求路径进行URL解码,比如把 /Web+App+Browser.html 解码成 /Web App Browser.html 再查找文件。 - |
-
| 终止请求 | -
-
-
-
-
- 在找不到要访问的文件的情况下是否终止请求并返回404,如果选择终止请求,则不再尝试反向代理等设置。 - |
-
| 启用WebP压缩 | -
-
-
-
-
- 选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 - |
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被转成WebP,不区分大小写。 - |
-
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 - |
-
| 内容最小长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 内容最大长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 匹配条件 | -
- |
-
| 当前正在使用的算法 | -
- {{scheduling.name}} [修改]
- {{scheduling.description}} - |
-
| 状态码 | -- - | -
| 提示内容 | -- - | -
| 封禁时长 | -
-
-
- 秒
-
- 触发阻止动作时,封禁客户端IP的时间。 - |
-
| 最大封禁时长 | -
-
-
- 秒
-
- 如果最大封禁时长大于封禁时长({{timeout}}秒),那么表示每次封禁的时候,将会在这两个时长数字之间随机选取一个数字作为最终的封禁时长。 - |
-
| 失败全局封禁 | -
- 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 - |
-
| 启用HLS加密 | -
- 启用后,系统会自动在 |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 - |
-
{{param.description.replace("\${optionName}", name)}}
-{{name}}名称,类似于
{{name}}参数名称,比如
在请求刚初始化时调用,此时自定义报头等尚未生效。
-在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
-URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
-完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
-参数值除以10的余数,在0-9之间。
-参数值除以100的余数,在0-99之间。
-和参数值一致的字符串。
-和参数值不一致的字符串。
-参数值的前缀。
-参数值的后缀为此字符串。
-参数值包含此字符串。
-参数值不包含此字符串。
-添加参数值列表。
-添加参数值列表。
-添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
-参数中IP转换成整数后除以10的余数,在0-9之间。
-参数中IP转换成整数后除以100的余数,在0-99之间。
-选中后表示对比时忽略参数值的大小写。
-| 启用HTTP/2 | +
+
+
+
+
+ |
+ |
| 启用HTTP/3 | +
+
+
+
+
+ |
+ |
| 设置证书 | +
+
+
+ 选择或上传证书后HTTPSTLS服务才能生效。
+
+
+
+ |
+
+
+ |
+
+ |
+ |
| TLS最低版本 | ++ + | +|
| 加密算法套件(CipherSuites) | +
+
+
+
+
+
+
+
+
+
+
+
+ 点击可选套件添加。 + |
+ |
| 开启HSTS | +
+
+
+
+
+ + 开启后,会自动在响应Header中加入 + Strict-Transport-Security: + ... + max-age={{hsts.maxAge}} + ; includeSubDomains + ; preload + + + 修改 + + + |
+ |
| HSTS有效时间(max-age) | +
+
+
+
+
+
+
+ 秒
+
+ {{hsts.days}}天
+ + [1年/365天] + [6个月/182.5天] + [1个月/30天] + + |
+ |
| HSTS包含子域名(includeSubDomains) | +
+
+
+
+
+ |
+ |
| HSTS预加载(preload) | +
+
+
+
+
+ |
+ |
| HSTS生效的域名 | +
+
+
+
+
+
+
+
+
+ 取消
+
+
+
+
+ 如果没有设置域名的话,则默认支持所有的域名。 + |
+ |
| OCSP Stapling | +选中表示启用OCSP Stapling。 + |
+ |
| 客户端认证方式 | ++ + | +|
| 客户端认证CA证书 | +
+
+
+
+ 用来校验客户端证书以增强安全性,通常不需要设置。 + |
+ |
| 默认验证方式 | -
-
- {{captchaDef.description}} - |
-
| 有效时间 | -
-
-
- 秒
-
- 验证通过后在这个时间内不再验证,默认600秒。 - |
-
| 最多失败次数 | -
-
-
- 次
-
- 建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 - |
-
| 失败拦截时间 | -
-
-
- 秒
-
- 在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 - |
-
| 失败全局封禁 | -
- 选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 - |
-
| 验证码中数字个数 | -- - | -
| 定制UI | -|
| 页面标题 | -- - | -
| 按钮标题 | -
-
- 类似于 |
-
| 显示请求ID | -
- 在界面上显示请求ID,方便用户报告问题。 - |
-
| CSS样式 | -- - | -
| 页头提示 | -
-
- 类似于 |
-
| 页尾提示 | -
-
- 支持HTML。 - |
-
| 页面模板 | -
-
- 警告:{{uiBodyWarning}}模板中必须包含\${body}表示验证码表单!整个页面的模板,支持HTML,其中必须使用 |
-
| 允许用户使用极验 | -选中后,表示允许用户在WAF设置中选择极验。 - |
-
| 极验-验证ID * | -
-
- 在极验控制台--业务管理中获取。 - |
-
| 极验-验证Key * | -
-
- 在极验控制台--业务管理中获取。 - |
-
| 启用5秒盾 | +
+ |
+
| 验证有效期 | +
+
+
+ 秒
+
+ 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 + |
+
| 加入IP白名单 | +
+ 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
| 响应状态码 | -页面类型 | -新状态码 | -例外URL | -限制URL | -操作 | -
|---|---|---|---|---|---|
| - - {{page.status[0]}} - {{page.status}} - - - - | -
-
- {{page.url}}
-
-
-
-
- {{page.url}}
-
-
-
-
- [HTML内容]
-
-
-
- |
- - {{page.newStatus}} - 保持 - | -
-
- {{urlPattern.pattern}}
-
- -
- |
-
-
- {{urlPattern.pattern}}
-
- -
- |
- - 修改 - 删除 - | -
| 启用 | -
- 启用后,WAF将会尝试自动检测并阻止SYN Flood攻击。此功能需要节点已安装并启用nftables或Firewalld。 - |
-
| 空连接次数 | -
-
-
- 次/分钟
-
- 超过此数字的"空连接"将被视为SYN Flood攻击,为了防止误判,此数值默认不小于5。 - |
-
| 封禁时长 | -
-
-
- 秒
-
- |
-
| 忽略局域网访问 | -
- |
-
|
-
-
-
-
- |
- IP | -类型 | -级别 | -过期时间 | -备注 | -操作 | -
|---|---|---|---|---|---|---|
|
-
-
-
-
- |
-
-
-
- {{item.region}}
- | {{item.isp}}
-
- {{item.isp}}
-
-
- 添加于 {{item.createdTime}}
-
- @
-
- [黑白灰名单:{{item.list.name}}]
- [黑白灰名单:{{item.list.name}}
-
-
-
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
-
-
- [策略:{{item.policy.name}}]
-
-
-
-
-
- |
- - IPv4 - IPv4 - IPv6 - 所有IP - | -- {{item.eventLevelName}} - - - | -
-
- {{item.expiredTime}}
-
- 不过期
-
- 已过期
-
-
- {{formatSeconds(item.lifeSeconds)}}
- 已过期
-
- |
- - {{item.reason}} - - - - - - - | -- 日志 - 修改 - 删除 - | -
| 启用 | -|
| 发送渠道 | -
-
- 通过HTTP接口的方式调用你的自定义发送短信接口。 -通过阿里云短信服务发送短信接口;目前仅支持发送验证码。 -通过腾讯云短信服务发送短信接口;目前仅支持发送验证码。 - |
-
| HTTP接口的URL地址 * | -
-
- 接收发送短信请求的URL,必须以 |
-
| HTTP接口的请求方法 | -
-
- 以在URL参数中加入mobile、body和code三个参数( 通过POST表单发送mobile、body和code三个参数( |
-
| 签名名称 * | -
- 在阿里云短信服务 “签名管理” 中添加并通过审核后才能使用。 - |
-
| 模板CODE * | -
-
- 在阿里云短信服务 “模板管理” 中添加并通过审核后才能使用。 - |
-
| 模板中验证码变量名称 * | -
-
- 默认为 |
-
| AccessKey ID * | -
-
- 在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 - |
-
| AccessKey Secret * | -
-
- 和表单中的AccessKey ID对应,在阿里云 -- RAM访问控制 -- AccessKey中可以创建和获取。 - |
-
| SDK应用ID * | -
-
- 在腾讯云 -- 短信 -- 应用管理 -- 应用列表中可以查看。 - |
-
| 签名内容 * | -
-
- 比如“腾讯云”,在腾讯云 -- 短信 -- 签名管理中可以查看。 - |
-
| 正文模板ID * | -
-
- 在腾讯云 -- 短信 -- 正文模板管理中可以查看。 - |
-
| 密钥SecretId * | -
-
- 同SecretKey一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 - |
-
| 密钥SecretKey * | -
-
- 同SecretId一同在腾讯云 -- 访问管理 -- API密钥管理中获取。 - |
-
| 发送测试 | -[点此测试] | -
| 启用 | -|
| SMTP地址 * | -
-
- SMTP主机地址,比如 |
-
| SMTP端口 * | -
-
- SMTP主机端口,比如 |
-
| 用户名 * | -
-
- 通常为发件人邮箱地址。 - |
-
| 密码 * | -
-
- 邮箱登录密码或授权码,如不清楚,请查询对应邮件服务商文档。。 - |
-
| 发件人Email * | -
-
- 使用的发件人邮箱地址,通常和发件用户名一致。 - |
-
| 发件人名称 | -
-
- 使用的发件人名称,默认使用系统设置的产品名称。 - |
-
| 发送测试 | -[点此测试] | -
| 启用健康检查 | -
-
-
-
-
- 通过访问节点上的网站URL来确定节点是否健康。 - |
- ||||||||
| 检测URL * | -
-
-
-
拼接后的检测URL: |
- ||||||||
| 检测时间间隔 | -
- 两次检查之间的间隔。 - |
- ||||||||
| 自动上/下线IP | -
-
-
-
-
- 选中后系统会根据健康检查的结果自动标记节点IP节点的上线/下线状态,并可能自动同步DNS设置。注意:免费版的只能整体上下线整个节点,商业版的可以下线单个IP。 - |
- ||||||||
| 连续上线次数 | -
-
- 连续{{healthCheck.countUp}}次检查成功后自动恢复上线。 - |
- ||||||||
| 连续下线次数 | -
-
- 连续{{healthCheck.countDown}}次检查失败后自动下线。 - |
- ||||||||
| 允许的状态码 | -
- 允许检测URL返回的状态码列表。 - |
- ||||||||
| 超时时间 | -
- 读取检测URL超时时间。 - |
- ||||||||
| 连续尝试次数 | -
-
- 如果读取检测URL失败后需要再次尝试的次数。 - |
- ||||||||
| 每次尝试间隔 | -
- 如果读取检测URL失败后再次尝试时的间隔时间。 - |
- ||||||||
| 终端信息(User-Agent) | -
-
- 发送到服务器的User-Agent值,不填写表示使用默认值。 - |
- ||||||||
| 只基础请求 | -
- 只做基础的请求,不处理反向代理(不检查源站)、WAF等。 - |
- ||||||||
| 记录访问日志 | -
- 记录健康检查的访问日志。 - |
- ||||||||
{{message}}
[{{log.createdTime}}][{{log.createdTime}}]-[{{log.tag}}]{{log.description}} 共{{log.count}}条 {{log.server.name}}
| 参数 | -
-
- {{param.description}} - |
-
| 操作符 | -- - | -
| {{param.valueName}} | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %
-
-
-
-
-
-
-
- %
-
-
-
-
-
-
-
-
-
-
- /秒
-
- |
-
{{currentAction.description}}
- -接收通知的URL。
-| 阈值 | -动作 | -||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
| 使用的DNS解析库 | -
-
- 边缘节点使用的DNS解析库。修改此项配置后,需要重启节点进程才会生效。 |
-
| 对象类型 | -网站 | -||||
| 网站列表 | -
- 加载中...
- 暂时还没有可选的网站。
-
|
-
| 对象类型 | +网站 | +||||
| 网站列表 | +
+ 加载中...
+ 暂时还没有可选的网站。
+
|
+
{{message}}
|
+
+
+
+
+ |
+ IP | +类型 | +级别 | +过期时间 | +备注 | +操作 | +
|---|---|---|---|---|---|---|
|
+
+
+
+
+ |
+
+
+
+ {{item.region}}
+ | {{item.isp}}
+
+ {{item.isp}}
+
+
+ 添加于 {{item.createdTime}}
+
+ @
+
+ [黑白灰名单:{{item.list.name}}]
+ [黑白灰名单:{{item.list.name}}
+
+
+
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+
+
+
+
+
+ |
+ + IPv4 + IPv4 + IPv6 + 所有IP + | ++ {{item.eventLevelName}} + - + | +
+
+ {{item.expiredTime}}
+
+ 不过期
+
+ 已过期
+
+
+ {{formatSeconds(item.lifeSeconds)}}
+ 已过期
+
+ |
+ + {{item.reason}} + - + + + + | ++ + 修改 + 删除 + | +
| 启用 | +
+ |
+
| 记录所有访问 | +
+ 包括对没有在系统里创建的域名访问。 + |
+
| 记录名 | +记录类型 | +线路 | +记录值 | +TTL | +操作 | +
|---|---|---|---|---|---|
| + + | ++ + | +
+ |
+ + + | +
+
+
+ 秒
+
+ |
+ + + | +
| 选择类型 * | +启用当前记录健康检查 |
-
+ |
+
| 检测端口 | +
+
+ 默认{{parentConfig.port}}
+ [修改]
+
+
+
+ [使用默认]
+
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
|
| 选择线路 * | +超时时间 |
-
+
+ 默认{{parentConfig.timeoutSeconds}}秒
+ [修改]
+
+
+
+ [使用默认]
+
+
+
+ 秒
+
+ |
| 选择省/州 | +||
| 默认连续上线次数 | - + + 默认{{parentConfig.countUp}}次 + [修改] + + |
由于套餐限制,当前用户只能使用部分线路。
+| 启用健康检查 | +
+ 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 + |
+
| 默认检测端口 | +
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
+
| 默认超时时间 | +
+
+
+ 秒
+
+ |
+
| 默认连续上线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 + |
+
| 默认连续下线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 + |
+
| 启用 | -
- |
-
| 记录所有访问 | -
- 包括对没有在系统里创建的域名访问。 - |
-
| 启用健康检查 | -
- 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 - |
-
| 默认检测端口 | -
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 默认超时时间 | -
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -
-
-
- 次
-
- 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 - |
-
| 默认连续下线次数 | -
-
-
- 次
-
- 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 - |
-
| 启用当前记录健康检查 | -
- |
-
| 检测端口 | -
-
- 默认{{parentConfig.port}}
- [修改]
-
-
-
-
- [使用默认]
-
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 超时时间 | -
-
- 默认{{parentConfig.timeoutSeconds}}秒
- [修改]
-
-
-
-
- [使用默认]
-
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -- - 默认{{parentConfig.countUp}}次 - [修改] - - - | -
| 默认连续下线次数 | -- - 默认{{parentConfig.countDown}}次 - [修改] - - - | -
| 记录名 | -记录类型 | -线路 | -记录值 | -TTL | -操作 | -
|---|---|---|---|---|---|
| - - | -- - | -
- |
- - - | -
-
-
- 秒
-
- |
- - - | -
| 选择类型 * | ++ + | +
| 选择线路 * | ++ + | +
| 选择省/州 | ++ + | +
由于套餐限制,当前用户只能使用部分线路。
+使用余额支付
{{method.description}}
使用余额支付
-{{method.description}}
-| 启用统计 | -
-
-
-
-
- |
-
| 分组{{groupIndex+1}} | -- - - {{cond.param}} {{cond.operator}} - {{typeName(cond)}}: - {{cond.value}} - - - - {{group.connector}} - - | -- - | -
| 分组之间关系 | -
-
- - 只要满足其中一个条件分组即可。 - 需要满足所有条件分组。 - - |
-
| 启用HTTP/2 | -
-
-
-
-
- |
- |
| 启用HTTP/3 | -
-
-
-
-
- |
- |
| 设置证书 | -
-
-
- 选择或上传证书后HTTPSTLS服务才能生效。
-
-
-
- |
-
-
- |
-
- |
- |
| TLS最低版本 | -- - | -|
| 加密算法套件(CipherSuites) | -
-
-
-
-
-
-
-
-
-
-
-
- 点击可选套件添加。 - |
- |
| 开启HSTS | -
-
-
-
-
- - 开启后,会自动在响应Header中加入 - Strict-Transport-Security: - ... - max-age={{hsts.maxAge}} - ; includeSubDomains - ; preload - - - 修改 - - - |
- |
| HSTS有效时间(max-age) | -
-
-
-
-
-
-
- 秒
-
- {{hsts.days}}天
- - [1年/365天] - [6个月/182.5天] - [1个月/30天] - - |
- |
| HSTS包含子域名(includeSubDomains) | -
-
-
-
-
- |
- |
| HSTS预加载(preload) | -
-
-
-
-
- |
- |
| HSTS生效的域名 | -
-
-
-
-
-
-
-
-
- 取消
-
-
-
-
- 如果没有设置域名的话,则默认支持所有的域名。 - |
- |
| OCSP Stapling | -选中表示启用OCSP Stapling。 - |
- |
| 客户端认证方式 | -- - | -|
| 客户端认证CA证书 | -
-
-
-
- 用来校验客户端证书以增强安全性,通常不需要设置。 - |
- |
暂时还没有缓存条件。
-| 缓存条件 | -缓存时间 | -
|---|---|
|
- |
- - {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} - 不缓存 - | -
支持普通域名(
只支持普通域名(
暂时还没有URL跳转规则。
-| - | 跳转前 | -- | 跳转后 | -HTTP状态码 | -状态 | -操作 | -||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - |
-
- {{redirect.beforeURL}}
-
-
+Vue.component("http-access-log-box", {
+ props: ["v-access-log"],
+ data: function () {
+ let accessLog = this.vAccessLog
+ if (accessLog.header != null && accessLog.header.Upgrade != null && accessLog.header.Upgrade.values != null && accessLog.header.Upgrade.values.$contains("websocket")) {
+ if (accessLog.scheme == "http") {
+ accessLog.scheme = "ws"
+ } else if (accessLog.scheme == "https") {
+ accessLog.scheme = "wss"
+ }
+ }
+ return {
+ accessLog: accessLog
+ }
+ },
+ methods: {
+ formatCost: function (seconds) {
+ if (seconds == null) {
+ return "0"
+ }
+ let s = (seconds * 1000).toString();
+ let pieces = s.split(".");
+ if (pieces.length < 2) {
+ return s;
+ }
+
+ return pieces[0] + "." + pieces[1].substring(0, 3);
+ },
+ showLog: function () {
+ let that = this
+ let requestId = this.accessLog.requestId
+ this.$parent.$children.forEach(function (v) {
+ if (v.deselect != null) {
+ v.deselect()
+ }
+ })
+ this.select()
+ teaweb.popup("/servers/server/log/viewPopup?requestId=" + requestId, {
+ width: "50em",
+ height: "24em",
+ onClose: function () {
+ that.deselect()
+ }
+ })
+ },
+ select: function () {
+ this.$refs.box.parentNode.style.cssText = "background: rgba(0, 0, 0, 0.1)"
+ },
+ deselect: function () {
+ this.$refs.box.parentNode.style.cssText = ""
+ }
+ },
+ template: `
+ [{{accessLog.region}}] {{accessLog.remoteAddr}} [{{accessLog.timeLocal}}] "{{accessLog.requestMethod}} {{accessLog.scheme}}://{{accessLog.host}}{{accessLog.requestURI}} {{accessLog.proto}}" {{accessLog.status}} [cached] `
+})
+
+Vue.component("http-access-log-config-box", {
+ props: ["v-access-log-config", "v-fields", "v-default-field-codes", "v-access-log-policies", "v-is-location", "v-is-group"],
+ data: function () {
+ let that = this
+
+ // 初始化
+ setTimeout(function () {
+ that.changeFields()
+ that.changePolicy()
+ }, 100)
+
+ let accessLog = {
+ isPrior: false,
+ isOn: false,
+ fields: [],
+ status1: true,
+ status2: true,
+ status3: true,
+ status4: true,
+ status5: true,
+
+ storageOnly: false,
+ storagePolicies: [],
+
+ firewallOnly: false
+ }
+ if (this.vAccessLogConfig != null) {
+ accessLog = this.vAccessLogConfig
+ }
+
+ this.vFields.forEach(function (v) {
+ if (that.vAccessLogConfig == null) { // 初始化默认值
+ v.isChecked = that.vDefaultFieldCodes.$contains(v.code)
+ } else {
+ v.isChecked = accessLog.fields.$contains(v.code)
+ }
+ })
+ this.vAccessLogPolicies.forEach(function (v) {
+ v.isChecked = accessLog.storagePolicies.$contains(v.id)
+ })
+
+ return {
+ accessLog: accessLog,
+ showAdvancedOptions: false
+ }
+ },
+ methods: {
+ changeFields: function () {
+ this.accessLog.fields = this.vFields.filter(function (v) {
+ return v.isChecked
+ }).map(function (v) {
+ return v.code
+ })
+ },
+ changePolicy: function () {
+ this.accessLog.storagePolicies = this.vAccessLogPolicies.filter(function (v) {
+ return v.isChecked
+ }).map(function (v) {
+ return v.id
+ })
+ },
+ changeAdvanced: function (v) {
+ this.showAdvancedOptions = v
+ }
+ },
+ template: `
+
+
+
所有规则匹配顺序为从上到下,可以拖动左侧的排序。 + |
+ |||||||||||||||
| 是否只输出到日志策略 | +
+
+
+
+
+ 选中表示只输出日志到日志策略,而停止默认的日志存储。 + |
+ |||||||||||||||
| 只记录WAF相关日志 | +
+ 选中后只记录WAF相关的日志。 + |
+ |||||||||||||||
| 启用鉴权 | +
+
+
+
+
+ |
+
| 名称 | +鉴权方法 | +参数 | +状态 | +操作 | +
|---|---|---|---|---|
| {{ref.authPolicy.name}} | ++ {{methodName(ref.authPolicy.type)}} + | +
+ {{ref.authPolicy.params.users.length}}个用户
+
+ [{{ref.authPolicy.params.method}}]
+ {{ref.authPolicy.params.url}}
+
+ {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
+
+
+
+ |
+
+ |
+ + 修改 + 删除 + | +
| 启用缓存 | +
+
+
+
+
+ |
+ ||||
| 缓存主域名 | +
+ 默认 [修改]
+ 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
+
+
+
+
|
+ ||||
| + 收起选项更多选项 + | +|||||
| 使用默认缓存条件 | +
+ 选中后使用系统中已经定义的默认缓存条件。 + |
+ ||||
| 添加X-Cache报头 | +
+ 选中后自动在响应报头中增加 |
+ ||||
| 添加Age Header | +
+ 选中后自动在响应Header中增加 |
+ ||||
| 支持源站控制有效时间 | +
+ 选中后表示支持源站在Header中设置的 |
+ ||||
| 允许PURGE | +
+ 允许使用PURGE方法清除某个URL缓存。 + |
+ ||||
| PURGE Key * | +
+
+ [随机生成]。需要在PURGE方法调用时加入 |
+ ||||
| 启用请求限制 | -
- |
-
| 最大并发连接数 | -
-
- 当前网站最大并发连接数,超出此限制则响应用户 |
-
| 单IP最大并发连接数 | -
-
- 单IP最大连接数,统计单个IP总连接数时不区分服务,超出此限制则响应用户 |
-
| 单连接带宽限制 | -
- 客户端单个请求每秒可以读取的下行流量。 - |
-
| 单请求最大尺寸 | -
- 单个请求能发送的最大内容尺寸。 - |
-
| 替换前内容 * | -- | |||||||||||||||
| 替换后内容 | -- | |||||||||||||||
| 是否忽略大小写 | -
- |
- |||||||||||||||
| 缓存条件 | +缓存时间 | +
|---|---|
|
+ |
+ + {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} + 不缓存 + | +
| 启用Web防火墙 | -
-
-
-
-
- |
-
| 人机识别验证方式 | -
-
- 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 -{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 - |
-
| 启用系统全局规则 | -
- 选中后,表示使用系统全局WAF策略中定义的规则。 - |
-
| 启用缓存 | -
-
-
-
-
- |
- ||||
| 缓存主域名 | -
- 默认 [修改]
- 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
-
-
-
-
|
- ||||
| - 收起选项更多选项 - | -|||||
| 使用默认缓存条件 | -
- 选中后使用系统中已经定义的默认缓存条件。 - |
- ||||
| 添加X-Cache报头 | -
- 选中后自动在响应报头中增加 |
- ||||
| 添加Age Header | -
- 选中后自动在响应Header中增加 |
- ||||
| 支持源站控制有效时间 | -
- 选中后表示支持源站在Header中设置的 |
- ||||
| 允许PURGE | -
- 允许使用PURGE方法清除某个URL缓存。 - |
- ||||
| PURGE Key * | -
-
- [随机生成]。需要在PURGE方法调用时加入 |
- ||||
| 通用Header列表 | -
- 需要检查的Header列表。 - |
-
| Header值超出长度 | -
-
-
- 字节
-
- 超出此长度认为匹配成功,0表示不限制。 - |
-
| 统计对象组合 * | -
- |
-
| 统计周期 * | -
-
-
- 秒
-
- |
-
| 阈值 * | -
-
- 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 来源域名允许为空 | -
- 允许不带来源的访问。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 源站地址 | -权重 | -状态 | -操作 | -|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
- {{origin.addr}}
-
-
- |
- {{origin.weight}} | +
| 启用过时缓存 |
- 选中后,在更新缓存失败后会尝试读取过时的缓存。 |
+
| 有效期 |
- 修改
- 停用启用
- 删除
+ 缓存在过期之后,仍然保留的时间。 + |
+
| 状态码 | +在这些状态码出现时使用过时缓存,默认支持 |
+
| 支持stale-if-error | +
+ 选中后,支持在Cache-Control中通过 |
| 启用CC无感防护 | +
+ |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 启用GET302校验 | +
+ 选中后,表示自动通过GET302方法来校验客户端。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) + |
+
| 使用自定义拦截阈值 | +
+ |
+
| 自定义拦截阈值设置 | +
+
+
+
+
+ 单IP每5秒最多
+
+ 请求
+
+
+
+
+ 单IP每60秒
+
+ 请求
+
+
+
+
+ 单IP每300秒
+
+ 请求
+
+ |
+
| 启用字符编码 | +
+
+
+
+
+ |
+
| 选择字符编码 | ++ | +
| 强制替换 | +
+ 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 + |
+
| 字符编码大写 | +
+
+
+
+
+ 选中后将指定的字符编码转换为大写,比如默认为 |
+
| 启用内容压缩 | +
+
+
+
+
+ |
+
| 支持的扩展名 | +
+ 含有这些扩展名的URL将会被压缩,不区分大小写。 + |
+
| 例外扩展名 | +
+ 含有这些扩展名的URL将不会被压缩,不区分大小写。 + |
+
| 支持的MimeType | +
+ 响应的Content-Type里包含这些MimeType的内容将会被压缩。 + |
+
| 压缩算法 | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择支持的压缩算法和优先顺序,拖动图表排序。 + |
+
| 支持已压缩内容 | +
+ 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 + |
+
| 内容最小长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 内容最大长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 支持Partial Content |
+
+ 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
+完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
+参数值除以10的余数,在0-9之间。
+参数值除以100的余数,在0-99之间。
+和参数值一致的字符串。
+和参数值不一致的字符串。
+参数值的前缀。
+参数值的后缀为此字符串。
+参数值包含此字符串。
+参数值不包含此字符串。
+添加参数值列表。
+添加参数值列表。
+添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
+参数中IP转换成整数后除以10的余数,在0-9之间。
+参数中IP转换成整数后除以100的余数,在0-99之间。
+选中后表示对比时忽略参数值的大小写。
+| HTML优化 | +启用页面动态加密 |
-
+
- 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 +启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 |
| HTML例外URL | +排除 URL |
- 如果填写了例外URL,表示这些URL跳过不做处理。 +这些 URL 将跳过加密处理,支持正则表达式。 |
| HTML限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
- |
| Javascript优化 | -
-
-
-
-
- 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 - |
-
| Javascript例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| Javascript限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| CSS优化 | -
-
-
-
-
- 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 - |
-
| CSS例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| CSS限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| HTML 加密 | +
+
+
+
+
+ 加密 HTML 页面中的 JavaScript 脚本。 + |
+
| 加密内联脚本 | +
+
+
+
+
+ 加密 HTML 中的内联 <script> 标签内容。 + |
+
| 加密外部脚本 | +
+
+
+
+
+ 加密通过 src 属性引入的外部 JavaScript 文件。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| JavaScript 文件加密 | +
+
+
+
+
+ 加密独立的 JavaScript 文件(.js 文件)。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| 服务器端密钥 | +
+
+ 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! + |
+
| 时间分片(秒) | +
+
+ 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 + |
+
| IP CIDR 前缀长度 | +
+
+ 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 + |
+
| 简化 User-Agent | +
+
+
+
+
+ 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 + |
+
| 启用缓存 | +
+
+
+
+
+ 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 + |
+
| 缓存 TTL(秒) | +
+
+ 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 + |
+
| 最大缓存条目数 | +
+
+ 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 + |
+
| 启用Websocket | -
-
-
-
-
- |
-
| 允许所有来源域(Origin) | -
-
-
-
-
- 选中表示允许所有的来源域。 - |
-
| 允许的来源域列表(Origin) | -
-
-
- 只允许在列表中的来源域名访问Websocket服务。 - |
-
| 传递请求来源域 | -
-
-
-
-
- 选中后,表示把接收到的请求中的 |
-
| 指定传递的来源域 | -
-
- 指定向源站传递的Origin字段值。 - |
-
| 握手超时时间(Handshake) | -
-
-
-
-
-
-
- 秒
-
- 0表示使用默认的时间设置。 - |
-
暂时还没有重写规则。
-| - | 匹配规则 | -转发目标 | -转发方式 | -状态 | -操作 | -
|---|---|---|---|---|---|
| - | {{rule.pattern}}
- - |
- {{rule.replace}} | -- 隐式 - 显示 - | -
- |
- - 修改 - 删除 - | -
拖动左侧的图标可以对重写规则进行排序。
- -| 启用5秒盾 | -
- |
-
| 验证有效期 | -
-
-
- 秒
-
- 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 - |
-
| 加入IP白名单 | -
- 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 - |
-
| 匹配条件 | -
- |
-
| 启用过时缓存 | -
- 选中后,在更新缓存失败后会尝试读取过时的缓存。 - |
-
| 有效期 | -
- 缓存在过期之后,仍然保留的时间。 - |
-
| 状态码 | -在这些状态码出现时使用过时缓存,默认支持 |
-
| 支持stale-if-error | -
- 选中后,支持在Cache-Control中通过 |
-
支持普通域名(
只支持普通域名(
| 启用防盗链 | -
-
-
-
-
- 选中后表示开启防盗链。 - |
-
| 允许直接访问网站 | -
- 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的其他来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 - |
-
| 自动跳转到HTTPS | -
-
-
-
-
- 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 启用 | +启用后,将会在响应的Header中添加 |
- ||||||
| 覆盖源站设置 | +
+ 选中后,会覆盖源站Header中已有的 |
+ ||||||||
| 自动计算时间 | +根据已设置的缓存有效期进行计算。 + |
+ ||||||||
| 强制缓存时间 | +
+ 从客户端访问的时间开始要缓存的时长。 + |
+
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | -- - | -
| 跳转后域名或IP地址 | -
-
- 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 - |
-
| 端口 | -
-
- 默认端口为443。 - |
-
| 允许的域名 | -
- 如果填写了允许的域名,那么只有这些域名可以自动跳转。 - |
-
| 排除的域名 | -
- 如果填写了排除的域名,那么这些域名将不跳转。 - |
-
| 启用鉴权 | -
-
-
-
-
- |
-
| 名称 | -鉴权方法 | -参数 | -状态 | -操作 | -
|---|---|---|---|---|
| {{ref.authPolicy.name}} | +启用Web防火墙 | - {{methodName(ref.authPolicy.type)}} - | -
- {{ref.authPolicy.params.users.length}}个用户
-
- [{{ref.authPolicy.params.method}}]
- {{ref.authPolicy.params.url}}
-
- {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
-
-
-
+
+
|
+ |
| 人机识别验证方式 |
- 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 +{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 |
+ |||
| 启用系统全局规则 |
- 修改
- 删除
+ 选中后,表示使用系统全局WAF策略中定义的规则。 |
| 通用Header列表 | +
+ 需要检查的Header列表。 + |
+
| Header值超出长度 | +
+
+
+ 字节
+
+ 超出此长度认为匹配成功,0表示不限制。 + |
+
| 统计对象组合 * | +
+ |
+
| 统计周期 * | +
+
+
+ 秒
+
+ |
+
| 阈值 * | +
+
+ 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 来源域名允许为空 | +
+ 允许不带来源的访问。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 启用HLS加密 | +
+ 启用后,系统会自动在 |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 + |
+
暂时还没有URL跳转规则。
+| + | 跳转前 | ++ | 跳转后 | +HTTP状态码 | +状态 | +操作 | +
|---|---|---|---|---|---|---|
| + |
+
+ {{redirect.beforeURL}}
+
+
+
+
+ 所有域名
+
+ {{redirect.domainsBefore[0]}}
+ {{redirect.domainsBefore[0]}}等{{redirect.domainsBefore.length}}个域名
+
+
+
+
+
+ 所有端口
+
+ {{redirect.portsBefore.join(", ")}}
+ {{redirect.portsBefore.slice(0, 5).join(", ")}}等{{redirect.portsBefore.length}}个端口
+
+
+
+
+
+
+
+ |
+ -> | ++ {{redirect.afterURL}} + {{redirect.domainAfter}} + {{redirect.portAfter}} + | ++ {{redirect.status}} + 默认 + | ++ 修改 + 删除 + | +
所有规则匹配顺序为从上到下,可以拖动左侧的排序。
+| HTML优化 | +
+
+
+
+
+ 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 + |
+
| HTML例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| HTML限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| Javascript优化 | +
+
+
+
+
+ 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 + |
+
| Javascript例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| Javascript限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| CSS优化 | +
+
+
+
+
+ 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 + |
+
| CSS例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| CSS限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
{{param.description.replace("\${optionName}", name)}}
+{{name}}名称,类似于
{{name}}参数名称,比如
| 自动跳转到HTTPS | +
+
+
+
+
+ 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
|
+
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | ++ + | +
| 跳转后域名或IP地址 | +
+
+ 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 + |
+
| 端口 | +
+
+ 默认端口为443。 + |
+
| 允许的域名 | +
+ 如果填写了允许的域名,那么只有这些域名可以自动跳转。 + |
+
| 排除的域名 | +
+ 如果填写了排除的域名,那么这些域名将不跳转。 + |
+
| 启用防盗链 | +
+
+
+
+
+ 选中后表示开启防盗链。 + |
+
| 允许直接访问网站 | +
+ 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的其他来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 + |
+
| 启用访客IP设置 | +
+
+
+
+
+ 选中后,表示使用自定义的请求变量获取客户端IP。 + |
+
| 获取IP方式 * | +
+
+ {{option.description}} + |
+
| 请求报头 * | +
+
+ 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
+
| 读取IP变量值 * | +
+
+ 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 |
+
| 分组{{groupIndex+1}} | ++ + + {{cond.param}} {{cond.operator}} + {{typeName(cond)}}: + {{cond.value}} + + + + {{group.connector}} + + | ++ + | +
| 分组之间关系 | +
+
+ + 只要满足其中一个条件分组即可。 + 需要满足所有条件分组。 + + |
+
| 启用请求限制 | +
+ |
+
| 最大并发连接数 | +
+
+ 当前网站最大并发连接数,超出此限制则响应用户 |
+
| 单IP最大并发连接数 | +
+
+ 单IP最大连接数,统计单个IP总连接数时不区分服务,超出此限制则响应用户 |
+
| 单连接带宽限制 | +
+ 客户端单个请求每秒可以读取的下行流量。 + |
+
| 单请求最大尺寸 | +
+ 单个请求能发送的最大内容尺寸。 + |
+
| 启用页面动态加密 | -
-
-
-
-
- 启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 - |
-
| 排除 URL | -
- 这些 URL 将跳过加密处理,支持正则表达式。 - |
-
| HTML 加密 | -
-
-
-
-
- 加密 HTML 页面中的 JavaScript 脚本。 - |
-
| 加密内联脚本 | -
-
-
-
-
- 加密 HTML 中的内联 <script> 标签内容。 - |
-
| 加密外部脚本 | -
-
-
-
-
- 加密通过 src 属性引入的外部 JavaScript 文件。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| JavaScript 文件加密 | -
-
-
-
-
- 加密独立的 JavaScript 文件(.js 文件)。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| 服务器端密钥 | -
-
- 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! - |
-
| 时间分片(秒) | -
-
- 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 - |
-
| IP CIDR 前缀长度 | -
-
- 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 - |
-
| 简化 User-Agent | -
-
-
-
-
- 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 - |
-
| 启用缓存 | -
-
-
-
-
- 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 - |
-
| 缓存 TTL(秒) | -
-
- 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 - |
-
| 最大缓存条目数 | -
-
- 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 - |
-
在请求刚初始化时调用,此时自定义报头等尚未生效。
+在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
+暂时还没有重写规则。
+| + | 匹配规则 | +转发目标 | +转发方式 | +状态 | +操作 | +
|---|---|---|---|---|---|
| + | {{rule.pattern}}
+ + |
+ {{rule.replace}} | ++ 隐式 + 显示 + | +
+ |
+ + 修改 + 删除 + | +
拖动左侧的图标可以对重写规则进行排序。
+ +| 启用统计 | +
+
+
+
+
+ |
+
| 启用内容压缩 | +启用WebP压缩 |
|
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被压缩,不区分大小写。 - |
- |
| 例外扩展名 | -
- 含有这些扩展名的URL将不会被压缩,不区分大小写。 - |
- |
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被压缩。 +选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 |
|
| 压缩算法 | +支持的扩展名 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 选择支持的压缩算法和优先顺序,拖动图表排序。 +含有这些扩展名的URL将会被转成WebP,不区分大小写。 |
| 支持已压缩内容 | +支持的MimeType |
- 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 +响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 |
| 支持Partial Content |
-
- 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 - |
- |
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
- |
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 - |
- |
| 匹配条件 |
|
+
| 启用CC无感防护 | -
- |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 启用GET302校验 | -
- 选中后,表示自动通过GET302方法来校验客户端。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) - |
-
| 使用自定义拦截阈值 | -
- |
-
| 自定义拦截阈值设置 | -
-
-
-
-
- 单IP每5秒最多
-
- 请求
-
-
-
-
- 单IP每60秒
-
- 请求
-
-
-
-
- 单IP每300秒
-
- 请求
-
- |
-
[已打开] 打开后可以覆盖父级或子级配置。
-| 启用字符编码 | +启用Websocket |
-
+
|
||||||||||||||
| 选择字符编码 | -+ | 允许所有来源域(Origin) | +
+
+
+
+
+ 选中表示允许所有的来源域。 |
|||||||||||||
| 强制替换 | +允许的来源域列表(Origin) |
- 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 + + +只允许在列表中的来源域名访问Websocket服务。 |
||||||||||||||
| 字符编码大写 | +传递请求来源域 |
-
+
- 选中后将指定的字符编码转换为大写,比如默认为 选中后,表示把接收到的请求中的 |
+ ||||||||||||||
| 指定传递的来源域 | +
+
+ 指定向源站传递的Origin字段值。 + |
+ |||||||||||||||
| 握手超时时间(Handshake) | +
+
+
+
+
+
+
+ 秒
+
+ 0表示使用默认的时间设置。 |
|||||||||||||||
| 启用 | -启用后,将会在响应的Header中添加 |
-
| 覆盖源站设置 | -
- 选中后,会覆盖源站Header中已有的 |
-
| 自动计算时间 | -根据已设置的缓存有效期进行计算。 - |
-
| 强制缓存时间 | -
- 从客户端访问的时间开始要缓存的时长。 - |
-
| 启用访问日志 | -
-
-
-
-
- |
-
| 要存储的访问日志字段 | -
-
-
-
-
- |
-
| 要存储的访问日志状态码 | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
| 选择输出的日志策略 | -
- 暂时还没有缓存策略。
-
-
-
-
-
-
- |
-
| 是否只输出到日志策略 | -
-
-
-
-
- 选中表示只输出日志到日志策略,而停止默认的日志存储。 - |
-
| 只记录WAF相关日志 | -
- 选中后只记录WAF相关的日志。 - |
-
| 启用脚本设置 | -|
| 脚本代码 | -
- - 管理员审核结果:审核通过。 - 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} - 当前脚本将在审核后生效,请耐心等待审核结果。 - -管理员审核结果:审核通过。 -{{comment}} - |
-
| 源站地址 | +权重 | +状态 | +操作 | +
|---|---|---|---|
|
+ {{origin.addr}}
+
+
+ |
+ {{origin.weight}} | +
+ |
+ + 修改 + 停用启用 + 删除 + | +
| 当前正在使用的算法 | +
+ {{scheduling.name}} [修改]
+ {{scheduling.description}} + |
+
[已打开] 打开后可以覆盖父级或子级配置。
+| 启用访客IP设置 | -
-
-
-
-
- 选中后,表示使用自定义的请求变量获取客户端IP。 - |
+ 启用脚本设置 | +|
| 获取IP方式 * | +|||
| 脚本代码 |
-
- {{option.description}} - |
- ||
| 请求报头 * | -
-
- 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
- ||
| 读取IP变量值 * | -
-
- 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 + 管理员审核结果:审核通过。 + 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} + 当前脚本将在审核后生效,请耐心等待审核结果。 + +管理员审核结果:审核通过。 +{{comment}} |
| 启用WebP压缩 | -
-
-
-
-
- 选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 - |
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被转成WebP,不区分大小写。 - |
-
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 - |
-
| 内容最小长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 内容最大长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 匹配条件 | -
- |
-
| 当前正在使用的算法 | -
- {{scheduling.name}} [修改]
- {{scheduling.description}} - |
-
| 启用HLS加密 | -
- 启用后,系统会自动在 |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 - |
-
{{param.description.replace("\${optionName}", name)}}
-{{name}}名称,类似于
{{name}}参数名称,比如
在请求刚初始化时调用,此时自定义报头等尚未生效。
-在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
-URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
-完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
-参数值除以10的余数,在0-9之间。
-参数值除以100的余数,在0-99之间。
-和参数值一致的字符串。
-和参数值不一致的字符串。
-参数值的前缀。
-参数值的后缀为此字符串。
-参数值包含此字符串。
-参数值不包含此字符串。
-添加参数值列表。
-添加参数值列表。
-添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
-参数中IP转换成整数后除以10的余数,在0-9之间。
-参数中IP转换成整数后除以100的余数,在0-99之间。
-选中后表示对比时忽略参数值的大小写。
-| 启用HTTP/2 | +
+
+
+
+
+ |
+ |
| 启用HTTP/3 | +
+
+
+
+
+ |
+ |
| 设置证书 | +
+
+
+ 选择或上传证书后HTTPSTLS服务才能生效。
+
+
+
+ |
+
+
+ |
+
+ |
+ |
| TLS最低版本 | ++ + | +|
| 加密算法套件(CipherSuites) | +
+
+
+
+
+
+
+
+
+
+
+
+ 点击可选套件添加。 + |
+ |
| 开启HSTS | +
+
+
+
+
+ + 开启后,会自动在响应Header中加入 + Strict-Transport-Security: + ... + max-age={{hsts.maxAge}} + ; includeSubDomains + ; preload + + + 修改 + + + |
+ |
| HSTS有效时间(max-age) | +
+
+
+
+
+
+
+ 秒
+
+ {{hsts.days}}天
+ + [1年/365天] + [6个月/182.5天] + [1个月/30天] + + |
+ |
| HSTS包含子域名(includeSubDomains) | +
+
+
+
+
+ |
+ |
| HSTS预加载(preload) | +
+
+
+
+
+ |
+ |
| HSTS生效的域名 | +
+
+
+
+
+
+
+
+
+ 取消
+
+
+
+
+ 如果没有设置域名的话,则默认支持所有的域名。 + |
+ |
| OCSP Stapling | +选中表示启用OCSP Stapling。 + |
+ |
| 客户端认证方式 | ++ + | +|
| 客户端认证CA证书 | +
+
+
+
+ 用来校验客户端证书以增强安全性,通常不需要设置。 + |
+ |
| 启用5秒盾 | +
+ |
+
| 验证有效期 | +
+
+
+ 秒
+
+ 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 + |
+
| 加入IP白名单 | +
+ 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
|
-
-
-
-
- |
- IP | -类型 | -级别 | -过期时间 | -备注 | -操作 | -
|---|---|---|---|---|---|---|
|
-
-
-
-
- |
-
-
-
- {{item.region}}
- | {{item.isp}}
-
- {{item.isp}}
-
-
- 添加于 {{item.createdTime}}
-
- @
-
- [黑白灰名单:{{item.list.name}}]
- [黑白灰名单:{{item.list.name}}
-
-
-
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
-
-
-
-
-
- |
- - IPv4 - IPv4 - IPv6 - 所有IP - | -- {{item.eventLevelName}} - - - | -
-
- {{item.expiredTime}}
-
- 不过期
-
- 已过期
-
-
- {{formatSeconds(item.lifeSeconds)}}
- 已过期
-
- |
- - {{item.reason}} - - - - - - | -- - 修改 - 删除 - | -
{{message}}
| 对象类型 | -网站 | -||||
| 网站列表 | -
- 加载中...
- 暂时还没有可选的网站。
-
|
-
| 对象类型 | +网站 | +||||
| 网站列表 | +
+ 加载中...
+ 暂时还没有可选的网站。
+
|
+
{{message}}
|
+
+
+
+
+ |
+ IP | +类型 | +级别 | +过期时间 | +备注 | +操作 | +
|---|---|---|---|---|---|---|
|
+
+
+
+
+ |
+
+
+
+ {{item.region}}
+ | {{item.isp}}
+
+ {{item.isp}}
+
+
+ 添加于 {{item.createdTime}}
+
+ @
+
+ [黑白灰名单:{{item.list.name}}]
+ [黑白灰名单:{{item.list.name}}
+
+
+
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+ [网站:{{item.policy.server.name}}]
+
+
+
+
+
+ |
+ + IPv4 + IPv4 + IPv6 + 所有IP + | ++ {{item.eventLevelName}} + - + | +
+
+ {{item.expiredTime}}
+
+ 不过期
+
+ 已过期
+
+
+ {{formatSeconds(item.lifeSeconds)}}
+ 已过期
+
+ |
+ + {{item.reason}} + - + + + + | ++ + 修改 + 删除 + | +
| 启用 | +
+ |
+
| 记录所有访问 | +
+ 包括对没有在系统里创建的域名访问。 + |
+
| 记录名 | +记录类型 | +线路 | +记录值 | +TTL | +操作 | +
|---|---|---|---|---|---|
| + + | ++ + | +
+ |
+ + + | +
+
+
+ 秒
+
+ |
+ + + | +
| 选择类型 * | +启用当前记录健康检查 |
-
+ |
+
| 检测端口 | +
+
+ 默认{{parentConfig.port}}
+ [修改]
+
+
+
+ [使用默认]
+
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
|
| 选择线路 * | +超时时间 |
-
+
+ 默认{{parentConfig.timeoutSeconds}}秒
+ [修改]
+
+
+
+ [使用默认]
+
+
+
+ 秒
+
+ |
| 选择省/州 | +||
| 默认连续上线次数 | - + + 默认{{parentConfig.countUp}}次 + [修改] + + |
由于套餐限制,当前用户只能使用部分线路。
+| 启用健康检查 | +
+ 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 + |
+
| 默认检测端口 | +
+
+ 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 + |
+
| 默认超时时间 | +
+
+
+ 秒
+
+ |
+
| 默认连续上线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 + |
+
| 默认连续下线次数 | +
+
+
+ 次
+
+ 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 + |
+
| 启用 | -
- |
-
| 记录所有访问 | -
- 包括对没有在系统里创建的域名访问。 - |
-
| 启用健康检查 | -
- 选中后,表示启用当前域名下A/AAAA记录的健康检查;启用此设置后,你仍需设置单个A/AAAA记录的健康检查。 - |
-
| 默认检测端口 | -
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 默认超时时间 | -
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -
-
-
- 次
-
- 连续检测{{config.countUp}}N次成功后,认为当前记录是在线的。 - |
-
| 默认连续下线次数 | -
-
-
- 次
-
- 连续检测{{config.countDown}}N次失败后,认为当前记录是离线的。 - |
-
| 启用当前记录健康检查 | -
- |
-
| 检测端口 | -
-
- 默认{{parentConfig.port}}
- [修改]
-
-
-
-
- [使用默认]
-
-
- 通过尝试连接A/AAAA记录中的IP加此端口来确定当前记录是否健康。 - |
-
| 超时时间 | -
-
- 默认{{parentConfig.timeoutSeconds}}秒
- [修改]
-
-
-
-
- [使用默认]
-
-
-
- 秒
-
- |
-
| 默认连续上线次数 | -- - 默认{{parentConfig.countUp}}次 - [修改] - - - | -
| 默认连续下线次数 | -- - 默认{{parentConfig.countDown}}次 - [修改] - - - | -
| 记录名 | -记录类型 | -线路 | -记录值 | -TTL | -操作 | -
|---|---|---|---|---|---|
| - - | -- - | -
- |
- - - | -
-
-
- 秒
-
- |
- - - | -
| 选择类型 * | ++ + | +
| 选择线路 * | ++ + | +
| 选择省/州 | ++ + | +
由于套餐限制,当前用户只能使用部分线路。
+使用余额支付
{{method.description}}
使用余额支付
-{{method.description}}
-| 启用统计 | -
-
-
-
-
- |
-
| 分组{{groupIndex+1}} | -- - - {{cond.param}} {{cond.operator}} - {{typeName(cond)}}: - {{cond.value}} - - - - {{group.connector}} - - | -- - | -
| 分组之间关系 | -
-
- - 只要满足其中一个条件分组即可。 - 需要满足所有条件分组。 - - |
-
| 启用HTTP/2 | -
-
-
-
-
- |
- |
| 启用HTTP/3 | -
-
-
-
-
- |
- |
| 设置证书 | -
-
-
- 选择或上传证书后HTTPSTLS服务才能生效。
-
-
-
- |
-
-
- |
-
- |
- |
| TLS最低版本 | -- - | -|
| 加密算法套件(CipherSuites) | -
-
-
-
-
-
-
-
-
-
-
-
- 点击可选套件添加。 - |
- |
| 开启HSTS | -
-
-
-
-
- - 开启后,会自动在响应Header中加入 - Strict-Transport-Security: - ... - max-age={{hsts.maxAge}} - ; includeSubDomains - ; preload - - - 修改 - - - |
- |
| HSTS有效时间(max-age) | -
-
-
-
-
-
-
- 秒
-
- {{hsts.days}}天
- - [1年/365天] - [6个月/182.5天] - [1个月/30天] - - |
- |
| HSTS包含子域名(includeSubDomains) | -
-
-
-
-
- |
- |
| HSTS预加载(preload) | -
-
-
-
-
- |
- |
| HSTS生效的域名 | -
-
-
-
-
-
-
-
-
- 取消
-
-
-
-
- 如果没有设置域名的话,则默认支持所有的域名。 - |
- |
| OCSP Stapling | -选中表示启用OCSP Stapling。 - |
- |
| 客户端认证方式 | -- - | -|
| 客户端认证CA证书 | -
-
-
-
- 用来校验客户端证书以增强安全性,通常不需要设置。 - |
- |
暂时还没有缓存条件。
-| 缓存条件 | -缓存时间 | -
|---|---|
|
- |
- - {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} - 不缓存 - | -
支持普通域名(
只支持普通域名(
暂时还没有URL跳转规则。
-| - | 跳转前 | -- | 跳转后 | -HTTP状态码 | -状态 | -操作 | -||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - |
-
- {{redirect.beforeURL}}
-
-
+Vue.component("http-access-log-box", {
+ props: ["v-access-log"],
+ data: function () {
+ let accessLog = this.vAccessLog
+ if (accessLog.header != null && accessLog.header.Upgrade != null && accessLog.header.Upgrade.values != null && accessLog.header.Upgrade.values.$contains("websocket")) {
+ if (accessLog.scheme == "http") {
+ accessLog.scheme = "ws"
+ } else if (accessLog.scheme == "https") {
+ accessLog.scheme = "wss"
+ }
+ }
+ return {
+ accessLog: accessLog
+ }
+ },
+ methods: {
+ formatCost: function (seconds) {
+ if (seconds == null) {
+ return "0"
+ }
+ let s = (seconds * 1000).toString();
+ let pieces = s.split(".");
+ if (pieces.length < 2) {
+ return s;
+ }
+
+ return pieces[0] + "." + pieces[1].substring(0, 3);
+ },
+ showLog: function () {
+ let that = this
+ let requestId = this.accessLog.requestId
+ this.$parent.$children.forEach(function (v) {
+ if (v.deselect != null) {
+ v.deselect()
+ }
+ })
+ this.select()
+ teaweb.popup("/servers/server/log/viewPopup?requestId=" + requestId, {
+ width: "50em",
+ height: "24em",
+ onClose: function () {
+ that.deselect()
+ }
+ })
+ },
+ select: function () {
+ this.$refs.box.parentNode.style.cssText = "background: rgba(0, 0, 0, 0.1)"
+ },
+ deselect: function () {
+ this.$refs.box.parentNode.style.cssText = ""
+ }
+ },
+ template: `
+ [{{accessLog.region}}] {{accessLog.remoteAddr}} [{{accessLog.timeLocal}}] "{{accessLog.requestMethod}} {{accessLog.scheme}}://{{accessLog.host}}{{accessLog.requestURI}} {{accessLog.proto}}" {{accessLog.status}} [cached] `
+})
+
+Vue.component("http-access-log-config-box", {
+ props: ["v-access-log-config", "v-fields", "v-default-field-codes", "v-access-log-policies", "v-is-location", "v-is-group"],
+ data: function () {
+ let that = this
+
+ // 初始化
+ setTimeout(function () {
+ that.changeFields()
+ that.changePolicy()
+ }, 100)
+
+ let accessLog = {
+ isPrior: false,
+ isOn: false,
+ fields: [],
+ status1: true,
+ status2: true,
+ status3: true,
+ status4: true,
+ status5: true,
+
+ storageOnly: false,
+ storagePolicies: [],
+
+ firewallOnly: false
+ }
+ if (this.vAccessLogConfig != null) {
+ accessLog = this.vAccessLogConfig
+ }
+
+ this.vFields.forEach(function (v) {
+ if (that.vAccessLogConfig == null) { // 初始化默认值
+ v.isChecked = that.vDefaultFieldCodes.$contains(v.code)
+ } else {
+ v.isChecked = accessLog.fields.$contains(v.code)
+ }
+ })
+ this.vAccessLogPolicies.forEach(function (v) {
+ v.isChecked = accessLog.storagePolicies.$contains(v.id)
+ })
+
+ return {
+ accessLog: accessLog,
+ showAdvancedOptions: false
+ }
+ },
+ methods: {
+ changeFields: function () {
+ this.accessLog.fields = this.vFields.filter(function (v) {
+ return v.isChecked
+ }).map(function (v) {
+ return v.code
+ })
+ },
+ changePolicy: function () {
+ this.accessLog.storagePolicies = this.vAccessLogPolicies.filter(function (v) {
+ return v.isChecked
+ }).map(function (v) {
+ return v.id
+ })
+ },
+ changeAdvanced: function (v) {
+ this.showAdvancedOptions = v
+ }
+ },
+ template: `
+
+
+
所有规则匹配顺序为从上到下,可以拖动左侧的排序。 + |
+ |||||||||||||||
| 是否只输出到日志策略 | +
+
+
+
+
+ 选中表示只输出日志到日志策略,而停止默认的日志存储。 + |
+ |||||||||||||||
| 只记录WAF相关日志 | +
+ 选中后只记录WAF相关的日志。 + |
+ |||||||||||||||
| 启用鉴权 | +
+
+
+
+
+ |
+
| 名称 | +鉴权方法 | +参数 | +状态 | +操作 | +
|---|---|---|---|---|
| {{ref.authPolicy.name}} | ++ {{methodName(ref.authPolicy.type)}} + | +
+ {{ref.authPolicy.params.users.length}}个用户
+
+ [{{ref.authPolicy.params.method}}]
+ {{ref.authPolicy.params.url}}
+
+ {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ 有效期{{ref.authPolicy.params.life}}秒
+ {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
+
+
+
+ |
+
+ |
+ + 修改 + 删除 + | +
| 启用缓存 | +
+
+
+
+
+ |
+ ||||
| 缓存主域名 | +
+ 默认 [修改]
+ 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
+
+
+
+
|
+ ||||
| + 收起选项更多选项 + | +|||||
| 使用默认缓存条件 | +
+ 选中后使用系统中已经定义的默认缓存条件。 + |
+ ||||
| 添加X-Cache报头 | +
+ 选中后自动在响应报头中增加 |
+ ||||
| 添加Age Header | +
+ 选中后自动在响应Header中增加 |
+ ||||
| 支持源站控制有效时间 | +
+ 选中后表示支持源站在Header中设置的 |
+ ||||
| 允许PURGE | +
+ 允许使用PURGE方法清除某个URL缓存。 + |
+ ||||
| PURGE Key * | +
+
+ [随机生成]。需要在PURGE方法调用时加入 |
+ ||||
| 启用请求限制 | -
- |
-
| 最大并发连接数 | -
-
- 当前网站最大并发连接数,超出此限制则响应用户 |
-
| 单IP最大并发连接数 | -
-
- 单IP最大连接数,统计单个IP总连接数时不区分服务,超出此限制则响应用户 |
-
| 单连接带宽限制 | -
- 客户端单个请求每秒可以读取的下行流量。 - |
-
| 单请求最大尺寸 | -
- 单个请求能发送的最大内容尺寸。 - |
-
| 替换前内容 * | -- | ||||||||
| 替换后内容 | -- | ||||||||
| 是否忽略大小写 | -
- |
- ||||||||
| 缓存条件 | +缓存时间 | +
|---|---|
|
+ |
+ + {{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}} + 不缓存 + | +
| 启用Web防火墙 | -
-
-
-
-
- |
-
| 人机识别验证方式 | -
-
- 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 -{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 - |
-
| 启用系统全局规则 | -
- 选中后,表示使用系统全局WAF策略中定义的规则。 - |
-
| 启用缓存 | -
-
-
-
-
- |
- ||||
| 缓存主域名 | -
- 默认 [修改]
- 使用主域名:{{cacheConfig.key.scheme}}://{{cacheConfig.key.host}} [修改]
-
-
-
-
|
- ||||
| - 收起选项更多选项 - | -|||||
| 使用默认缓存条件 | -
- 选中后使用系统中已经定义的默认缓存条件。 - |
- ||||
| 添加X-Cache报头 | -
- 选中后自动在响应报头中增加 |
- ||||
| 添加Age Header | -
- 选中后自动在响应Header中增加 |
- ||||
| 支持源站控制有效时间 | -
- 选中后表示支持源站在Header中设置的 |
- ||||
| 允许PURGE | -
- 允许使用PURGE方法清除某个URL缓存。 - |
- ||||
| PURGE Key * | -
-
- [随机生成]。需要在PURGE方法调用时加入 |
- ||||
| 通用Header列表 | -
- 需要检查的Header列表。 - |
-
| Header值超出长度 | -
-
-
- 字节
-
- 超出此长度认为匹配成功,0表示不限制。 - |
-
| 统计对象组合 * | -
- |
-
| 统计周期 * | -
-
-
- 秒
-
- |
-
| 阈值 * | -
-
- 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 来源域名允许为空 | -
- 允许不带来源的访问。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 源站地址 | -权重 | -状态 | -操作 | -||||||
|---|---|---|---|---|---|---|---|---|---|
|
- {{origin.addr}}
-
-
- |
- {{origin.weight}} | +
| 启用过时缓存 |
- 选中后,在更新缓存失败后会尝试读取过时的缓存。 |
+
| 有效期 |
- 修改
- 停用启用
- 删除
+ 缓存在过期之后,仍然保留的时间。 + |
+
| 状态码 | +在这些状态码出现时使用过时缓存,默认支持 |
+
| 支持stale-if-error | +
+ 选中后,支持在Cache-Control中通过 |
| 启用CC无感防护 | +
+ |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 启用GET302校验 | +
+ 选中后,表示自动通过GET302方法来校验客户端。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) + |
+
| 使用自定义拦截阈值 | +
+ |
+
| 自定义拦截阈值设置 | +
+
+
+
+
+ 单IP每5秒最多
+
+ 请求
+
+
+
+
+ 单IP每60秒
+
+ 请求
+
+
+
+
+ 单IP每300秒
+
+ 请求
+
+ |
+
| 启用字符编码 | +
+
+
+
+
+ |
+
| 选择字符编码 | ++ | +
| 强制替换 | +
+ 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 + |
+
| 字符编码大写 | +
+
+
+
+
+ 选中后将指定的字符编码转换为大写,比如默认为 |
+
| 启用内容压缩 | +
+
+
+
+
+ |
+
| 支持的扩展名 | +
+ 含有这些扩展名的URL将会被压缩,不区分大小写。 + |
+
| 例外扩展名 | +
+ 含有这些扩展名的URL将不会被压缩,不区分大小写。 + |
+
| 支持的MimeType | +
+ 响应的Content-Type里包含这些MimeType的内容将会被压缩。 + |
+
| 压缩算法 | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择支持的压缩算法和优先顺序,拖动图表排序。 + |
+
| 支持已压缩内容 | +
+ 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 + |
+
| 内容最小长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 内容最大长度 | +
+ 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 + |
+
| 支持Partial Content |
+
+ 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
+完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
+参数值除以10的余数,在0-9之间。
+参数值除以100的余数,在0-99之间。
+和参数值一致的字符串。
+和参数值不一致的字符串。
+参数值的前缀。
+参数值的后缀为此字符串。
+参数值包含此字符串。
+参数值不包含此字符串。
+添加参数值列表。
+添加参数值列表。
+添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
+参数中IP转换成整数后除以10的余数,在0-9之间。
+参数中IP转换成整数后除以100的余数,在0-99之间。
+选中后表示对比时忽略参数值的大小写。
+| HTML优化 | +启用页面动态加密 |
-
+
- 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 +启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 |
| HTML例外URL | +排除 URL |
- 如果填写了例外URL,表示这些URL跳过不做处理。 +这些 URL 将跳过加密处理,支持正则表达式。 |
| HTML限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
- |
| Javascript优化 | -
-
-
-
-
- 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 - |
-
| Javascript例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| Javascript限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| CSS优化 | -
-
-
-
-
- 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 - |
-
| CSS例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| CSS限制URL | -
- 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 - |
-
| HTML 加密 | +
+
+
+
+
+ 加密 HTML 页面中的 JavaScript 脚本。 + |
+
| 加密内联脚本 | +
+
+
+
+
+ 加密 HTML 中的内联 <script> 标签内容。 + |
+
| 加密外部脚本 | +
+
+
+
+
+ 加密通过 src 属性引入的外部 JavaScript 文件。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| JavaScript 文件加密 | +
+
+
+
+
+ 加密独立的 JavaScript 文件(.js 文件)。 + |
+
| URL 匹配规则 | +
+ 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 + |
+
| 服务器端密钥 | +
+
+ 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! + |
+
| 时间分片(秒) | +
+
+ 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 + |
+
| IP CIDR 前缀长度 | +
+
+ 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 + |
+
| 简化 User-Agent | +
+
+
+
+
+ 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 + |
+
| 启用缓存 | +
+
+
+
+
+ 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 + |
+
| 缓存 TTL(秒) | +
+
+ 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 + |
+
| 最大缓存条目数 | +
+
+ 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 + |
+
| 启用Websocket | -
-
-
-
-
- |
-
| 允许所有来源域(Origin) | -
-
-
-
-
- 选中表示允许所有的来源域。 - |
-
| 允许的来源域列表(Origin) | -
-
-
- 只允许在列表中的来源域名访问Websocket服务。 - |
-
| 传递请求来源域 | -
-
-
-
-
- 选中后,表示把接收到的请求中的 |
-
| 指定传递的来源域 | -
-
- 指定向源站传递的Origin字段值。 - |
-
| 握手超时时间(Handshake) | -
-
-
-
-
-
-
- 秒
-
- 0表示使用默认的时间设置。 - |
-
暂时还没有重写规则。
-| - | 匹配规则 | -转发目标 | -转发方式 | -状态 | -操作 | -
|---|---|---|---|---|---|
| - | {{rule.pattern}}
- - |
- {{rule.replace}} | -- 隐式 - 显示 - | -
- |
- - 修改 - 删除 - | -
拖动左侧的图标可以对重写规则进行排序。
- -| 启用5秒盾 | -
- |
-
| 验证有效期 | -
-
-
- 秒
-
- 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 - |
-
| 加入IP白名单 | -
- 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 - |
-
| 匹配条件 | -
- |
-
| 启用过时缓存 | -
- 选中后,在更新缓存失败后会尝试读取过时的缓存。 - |
-
| 有效期 | -
- 缓存在过期之后,仍然保留的时间。 - |
-
| 状态码 | -在这些状态码出现时使用过时缓存,默认支持 |
-
| 支持stale-if-error | -
- 选中后,支持在Cache-Control中通过 |
-
支持普通域名(
只支持普通域名(
| 启用防盗链 | -
-
-
-
-
- 选中后表示开启防盗链。 - |
-
| 允许直接访问网站 | -
- 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 - |
-
| 来源域名允许一致 | -
- 允许来源域名和当前访问的域名一致,相当于在站内访问。 - |
-
| 允许的来源域名 | -
- 允许的其他来源域名列表,比如 |
-
| 禁止的来源域名 | -
- 禁止的来源域名列表,比如 |
-
| 同时检查Origin | -
- 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 - |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 - |
-
| 自动跳转到HTTPS | -
-
-
-
-
- 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 启用 | +启用后,将会在响应的Header中添加 |
- ||||||
| 覆盖源站设置 | +
+ 选中后,会覆盖源站Header中已有的 |
+ ||||||||
| 自动计算时间 | +根据已设置的缓存有效期进行计算。 + |
+ ||||||||
| 强制缓存时间 | +
+ 从客户端访问的时间开始要缓存的时长。 + |
+
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | -- - | -
| 跳转后域名或IP地址 | -
-
- 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 - |
-
| 端口 | -
-
- 默认端口为443。 - |
-
| 允许的域名 | -
- 如果填写了允许的域名,那么只有这些域名可以自动跳转。 - |
-
| 排除的域名 | -
- 如果填写了排除的域名,那么这些域名将不跳转。 - |
-
| 启用鉴权 | -
-
-
-
-
- |
-
| 名称 | -鉴权方法 | -参数 | -状态 | -操作 | -
|---|---|---|---|---|
| {{ref.authPolicy.name}} | +启用Web防火墙 | - {{methodName(ref.authPolicy.type)}} - | -
- {{ref.authPolicy.params.users.length}}个用户
-
- [{{ref.authPolicy.params.method}}]
- {{ref.authPolicy.params.url}}
-
- {{ref.authPolicy.params.signParamName}}/有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- 有效期{{ref.authPolicy.params.life}}秒
- {{ref.authPolicy.params.signParamName}}/{{ref.authPolicy.params.timestampParamName}}/有效期{{ref.authPolicy.params.life}}秒
-
-
-
+
+
|
+ |
| 人机识别验证方式 |
- 使用系统默认的设置。你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 +{{captchaType.description}}你需要在入站规则中添加规则集来决定哪些请求需要人机识别验证。 |
+ |||
| 启用系统全局规则 |
- 修改
- 删除
+ 选中后,表示使用系统全局WAF策略中定义的规则。 |
| 通用Header列表 | +
+ 需要检查的Header列表。 + |
+
| Header值超出长度 | +
+
+
+ 字节
+
+ 超出此长度认为匹配成功,0表示不限制。 + |
+
| 统计对象组合 * | +
+ |
+
| 统计周期 * | +
+
+
+ 秒
+
+ |
+
| 阈值 * | +
+
+ 对于网站类应用来说,当前阈值设置的太低,有可能会影响用户正常访问。 + |
+
| 检查请求来源指纹 | +
+ 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 + |
+
| 忽略常用文件 | +
+ 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 + |
+
| 来源域名允许为空 | +
+ 允许不带来源的访问。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 启用HLS加密 | +
+ 启用后,系统会自动在 |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 + |
+
暂时还没有URL跳转规则。
+| + | 跳转前 | ++ | 跳转后 | +HTTP状态码 | +状态 | +操作 | +
|---|---|---|---|---|---|---|
| + |
+
+ {{redirect.beforeURL}}
+
+
+
+
+ 所有域名
+
+ {{redirect.domainsBefore[0]}}
+ {{redirect.domainsBefore[0]}}等{{redirect.domainsBefore.length}}个域名
+
+
+
+
+
+ 所有端口
+
+ {{redirect.portsBefore.join(", ")}}
+ {{redirect.portsBefore.slice(0, 5).join(", ")}}等{{redirect.portsBefore.length}}个端口
+
+
+
+
+
+
+
+ |
+ -> | ++ {{redirect.afterURL}} + {{redirect.domainAfter}} + {{redirect.portAfter}} + | ++ {{redirect.status}} + 默认 + | ++ 修改 + 删除 + | +
所有规则匹配顺序为从上到下,可以拖动左侧的排序。
+| HTML优化 | +
+
+
+
+
+ 可以自动优化HTML中包含的空白、注释、空标签等。只有文件可以缓存时才会被优化。 + |
+
| HTML例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| HTML限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| Javascript优化 | +
+
+
+
+
+ 可以自动缩短Javascript中变量、函数名称等。只有文件可以缓存时才会被优化。 + |
+
| Javascript例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| Javascript限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
| CSS优化 | +
+
+
+
+
+ 可以自动去除CSS中包含的空白。只有文件可以缓存时才会被优化。 + |
+
| CSS例外URL | +
+ 如果填写了例外URL,表示这些URL跳过不做处理。 + |
+
| CSS限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行优化处理;如果不填则表示支持所有的URL。 + |
+
{{param.description.replace("\${optionName}", name)}}
+{{name}}名称,类似于
{{name}}参数名称,比如
| 自动跳转到HTTPS | +
+
+
+
+
+ 开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
|
+
开启后,所有HTTP的请求都会自动跳转到对应的HTTPS URL上,
| 状态码 | ++ + | +
| 跳转后域名或IP地址 | +
+
+ 默认和用户正在访问的域名或IP地址一致,不填写就表示使用当前的域名。 + |
+
| 端口 | +
+
+ 默认端口为443。 + |
+
| 允许的域名 | +
+ 如果填写了允许的域名,那么只有这些域名可以自动跳转。 + |
+
| 排除的域名 | +
+ 如果填写了排除的域名,那么这些域名将不跳转。 + |
+
| 启用防盗链 | +
+
+
+
+
+ 选中后表示开启防盗链。 + |
+
| 允许直接访问网站 | +
+ 允许用户直接访问网站,用户第一次访问网站时来源域名通常为空。 + |
+
| 来源域名允许一致 | +
+ 允许来源域名和当前访问的域名一致,相当于在站内访问。 + |
+
| 允许的来源域名 | +
+ 允许的其他来源域名列表,比如 |
+
| 禁止的来源域名 | +
+ 禁止的来源域名列表,比如 |
+
| 同时检查Origin | +
+ 如果请求没有指定Referer Header,则尝试检查Origin Header,多用于跨站调用。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行处理;如果不填则表示支持所有的URL。 + |
+
| 启用访客IP设置 | +
+
+
+
+
+ 选中后,表示使用自定义的请求变量获取客户端IP。 + |
+
| 获取IP方式 * | +
+
+ {{option.description}} + |
+
| 请求报头 * | +
+
+ 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
+
| 读取IP变量值 * | +
+
+ 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 |
+
| 分组{{groupIndex+1}} | ++ + + {{cond.param}} {{cond.operator}} + {{typeName(cond)}}: + {{cond.value}} + + + + {{group.connector}} + + | ++ + | +
| 分组之间关系 | +
+
+ + 只要满足其中一个条件分组即可。 + 需要满足所有条件分组。 + + |
+
| 启用请求限制 | +
+ |
+
| 最大并发连接数 | +
+
+ 当前网站最大并发连接数,超出此限制则响应用户 |
+
| 单IP最大并发连接数 | +
+
+ 单IP最大连接数,统计单个IP总连接数时不区分服务,超出此限制则响应用户 |
+
| 单连接带宽限制 | +
+ 客户端单个请求每秒可以读取的下行流量。 + |
+
| 单请求最大尺寸 | +
+ 单个请求能发送的最大内容尺寸。 + |
+
| 启用页面动态加密 | -
-
-
-
-
- 启用后,将对 HTML 页面中的 JavaScript 进行动态加密,有效抵御批量爬虫和脚本工具。 - |
-
| 排除 URL | -
- 这些 URL 将跳过加密处理,支持正则表达式。 - |
-
| HTML 加密 | -
-
-
-
-
- 加密 HTML 页面中的 JavaScript 脚本。 - |
-
| 加密内联脚本 | -
-
-
-
-
- 加密 HTML 中的内联 <script> 标签内容。 - |
-
| 加密外部脚本 | -
-
-
-
-
- 加密通过 src 属性引入的外部 JavaScript 文件。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| JavaScript 文件加密 | -
-
-
-
-
- 加密独立的 JavaScript 文件(.js 文件)。 - |
-
| URL 匹配规则 | -
- 如果填写了匹配规则,表示只对这些 URL 进行加密处理;如果不填则表示支持所有的 URL。 - |
-
| 服务器端密钥 | -
-
- 用于生成加密密钥的密码,建议使用复杂的随机字符串。默认密钥仅用于测试,生产环境请务必修改! - |
-
| 时间分片(秒) | -
-
- 加密密钥每隔多少秒更换一次。时间越短越安全,但可能影响性能。建议 60-120 秒,默认 60 秒。 - |
-
| IP CIDR 前缀长度 | -
-
- 将用户 IP 地址的前多少位作为识别依据。例如设置为 24 时,192.168.1.1 和 192.168.1.2 会被视为同一用户。默认 24。 - |
-
| 简化 User-Agent | -
-
-
-
-
- 开启后,只识别浏览器类型(如 Chrome、Firefox),忽略版本号等细节,避免因浏览器自动更新导致解密失败。 - |
-
| 启用缓存 | -
-
-
-
-
- 开启后,相同内容的加密结果会被缓存,减少重复计算,提升响应速度。 - |
-
| 缓存 TTL(秒) | -
-
- 缓存的有效期,超过这个时间后缓存会自动失效。建议与上面的"时间分片"保持一致。默认 60 秒。 - |
-
| 最大缓存条目数 | -
-
- 最多缓存多少个加密结果。数量越大占用内存越多,建议根据服务器内存情况调整。默认 1000。 - |
-
在请求刚初始化时调用,此时自定义报头等尚未生效。
+在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
+暂时还没有重写规则。
+| + | 匹配规则 | +转发目标 | +转发方式 | +状态 | +操作 | +
|---|---|---|---|---|---|
| + | {{rule.pattern}}
+ + |
+ {{rule.replace}} | ++ 隐式 + 显示 + | +
+ |
+ + 修改 + 删除 + | +
拖动左侧的图标可以对重写规则进行排序。
+ +| 启用统计 | +
+
+
+
+
+ |
+
| 启用内容压缩 | +启用WebP压缩 |
|
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被压缩,不区分大小写。 - |
- |
| 例外扩展名 | -
- 含有这些扩展名的URL将不会被压缩,不区分大小写。 - |
- |
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被压缩。 +选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 |
|
| 压缩算法 | +支持的扩展名 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 选择支持的压缩算法和优先顺序,拖动图表排序。 +含有这些扩展名的URL将会被转成WebP,不区分大小写。 |
| 支持已压缩内容 | +支持的MimeType |
- 支持对已压缩内容尝试重新使用新的算法压缩;不选中表示保留当前的压缩格式。 +响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 |
| 支持Partial Content |
-
- 支持对分片内容(PartialContent)的压缩;除非客户端有特殊要求,一般不需要启用。 - |
- |
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
- |
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行压缩处理;如果不填则表示支持所有的URL。 - |
- |
| 匹配条件 |
|
+
| 启用CC无感防护 | -
- |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过CC防护不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行CC防护处理;如果不填则表示支持所有的URL。 - |
-
| 忽略常用文件 | -
- 忽略js、css、jpg等常在网页里被引用的文件名,即对这些文件的访问不加入计数,可以减少误判几率。 - |
-
| 检查请求来源指纹 | -
- 在接收到HTTPS请求时尝试检查请求来源的指纹,用来检测代理服务和爬虫攻击;如果你在网站前面放置了别的反向代理服务,请取消此选项。 - |
-
| 启用GET302校验 | -
- 选中后,表示自动通过GET302方法来校验客户端。 - |
-
| 单IP最低QPS | -
-
-
- 请求数/秒
-
- 当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置) - |
-
| 使用自定义拦截阈值 | -
- |
-
| 自定义拦截阈值设置 | -
-
-
-
-
- 单IP每5秒最多
-
- 请求
-
-
-
-
- 单IP每60秒
-
- 请求
-
-
-
-
- 单IP每300秒
-
- 请求
-
- |
-
[已打开] 打开后可以覆盖父级或子级配置。
-| 启用字符编码 | +启用Websocket |
-
+
|
||||
| 选择字符编码 | -+ | 允许所有来源域(Origin) | +
+
+
+
+
+ 选中表示允许所有的来源域。 |
|||
| 强制替换 | +允许的来源域列表(Origin) |
- 选中后,表示强制覆盖已经设置的字符集;不选中,表示如果源站已经设置了字符集,则保留不修改。 + + +只允许在列表中的来源域名访问Websocket服务。 |
||||
| 字符编码大写 | +传递请求来源域 |
-
+
- 选中后将指定的字符编码转换为大写,比如默认为 选中后,表示把接收到的请求中的 |
+ ||||
| 指定传递的来源域 | +
+
+ 指定向源站传递的Origin字段值。 + |
+ |||||
| 握手超时时间(Handshake) | +
+
+
+
+
+
+
+ 秒
+
+ 0表示使用默认的时间设置。 |
|||||
| 启用 | -启用后,将会在响应的Header中添加 |
-
| 覆盖源站设置 | -
- 选中后,会覆盖源站Header中已有的 |
-
| 自动计算时间 | -根据已设置的缓存有效期进行计算。 - |
-
| 强制缓存时间 | -
- 从客户端访问的时间开始要缓存的时长。 - |
-
| 启用访问日志 | -
-
-
-
-
- |
-
| 要存储的访问日志字段 | -
-
-
-
-
- |
-
| 要存储的访问日志状态码 | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
| 选择输出的日志策略 | -
- 暂时还没有缓存策略。
-
-
-
-
-
-
- |
-
| 是否只输出到日志策略 | -
-
-
-
-
- 选中表示只输出日志到日志策略,而停止默认的日志存储。 - |
-
| 只记录WAF相关日志 | -
- 选中后只记录WAF相关的日志。 - |
-
| 启用脚本设置 | -|
| 脚本代码 | -
- - 管理员审核结果:审核通过。 - 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} - 当前脚本将在审核后生效,请耐心等待审核结果。 - -管理员审核结果:审核通过。 -{{comment}} - |
-
| 源站地址 | +权重 | +状态 | +操作 | +
|---|---|---|---|
|
+ {{origin.addr}}
+
+
+ |
+ {{origin.weight}} | +
+ |
+ + 修改 + 停用启用 + 删除 + | +
| 当前正在使用的算法 | +
+ {{scheduling.name}} [修改]
+ {{scheduling.description}} + |
+
[已打开] 打开后可以覆盖父级或子级配置。
+| 启用访客IP设置 | -
-
-
-
-
- 选中后,表示使用自定义的请求变量获取客户端IP。 - |
+ 启用脚本设置 | +|
| 获取IP方式 * | +|||
| 脚本代码 |
-
- {{option.description}} - |
- ||
| 请求报头 * | -
-
- 请输入包含有客户端IP的请求报头,需要注意大小写,常见的有 |
- ||
| 读取IP变量值 * | -
-
- 通过此变量获取用户的IP地址。具体可用的请求变量列表可参考官方网站文档;比如通过报头传递IP的情形,可以使用 + 管理员审核结果:审核通过。 + 管理员审核结果:驳回 驳回理由:{{auditingStatus.rejectedReason}} + 当前脚本将在审核后生效,请耐心等待审核结果。 + +管理员审核结果:审核通过。 +{{comment}} |
| 启用WebP压缩 | -
-
-
-
-
- 选中后表示开启自动WebP压缩;图片的宽和高均不能超过16383像素;只有满足缓存条件的图片内容才会被转换。 - |
-
| 支持的扩展名 | -
- 含有这些扩展名的URL将会被转成WebP,不区分大小写。 - |
-
| 支持的MimeType | -
- 响应的Content-Type里包含这些MimeType的内容将会被转成WebP。 - |
-
| 内容最小长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 内容最大长度 | -
- 0表示不限制,内容长度从文件尺寸或Content-Length中获取。 - |
-
| 匹配条件 | -
- |
-
| 当前正在使用的算法 | -
- {{scheduling.name}} [修改]
- {{scheduling.description}} - |
-
| 启用HLS加密 | -
- 启用后,系统会自动在 |
-
| 例外URL | -
- 如果填写了例外URL,表示这些URL跳过不做处理。 - |
-
| 限制URL | -
- 如果填写了限制URL,表示只对这些URL进行加密处理;如果不填则表示支持所有的URL。 - |
-
{{param.description.replace("\${optionName}", name)}}
-{{name}}名称,类似于
{{name}}参数名称,比如
在请求刚初始化时调用,此时自定义报头等尚未生效。
-在准备执行请求或者转发请求之前调用,此时自定义报头、源站等已准备好。
-URL前缀,有此前缀的URL都将会被匹配,通常以
要排除的URL前缀,有此前缀的URL都将会被匹配,通常以
检查URL路径是为
支持全站所有URL。
-完整的URL路径,通常以
要排除的完整的URL路径,通常以
匹配URL的正则表达式,比如
不要匹配URL的正则表达式,意即只要匹配成功则排除此条件,比如
匹配URL的通配符,用星号(
匹配User-Agent的正则表达式,比如
匹配User-Agent的正则表达式,比如
其中可以使用变量,类似于
要匹配的正则表达式,比如
要对比的数字。
-参数值除以10的余数,在0-9之间。
-参数值除以100的余数,在0-99之间。
-和参数值一致的字符串。
-和参数值不一致的字符串。
-参数值的前缀。
-参数值的后缀为此字符串。
-参数值包含此字符串。
-参数值不包含此字符串。
-添加参数值列表。
-添加参数值列表。
-添加扩展名列表,比如
添加MimeType列表,类似于
要对比的IP。
-参数中IP转换成整数后除以10的余数,在0-9之间。
-参数中IP转换成整数后除以100的余数,在0-99之间。
-选中后表示对比时忽略参数值的大小写。
-| 启用HTTP/2 | +
+
+
+
+
+ |
+ |
| 启用HTTP/3 | +
+
+
+
+
+ |
+ |
| 设置证书 | +
+
+
+ 选择或上传证书后HTTPSTLS服务才能生效。
+
+
+
+ |
+
+
+ |
+
+ |
+ |
| TLS最低版本 | ++ + | +|
| 加密算法套件(CipherSuites) | +
+
+
+
+
+
+
+
+
+
+
+
+ 点击可选套件添加。 + |
+ |
| 开启HSTS | +
+
+
+
+
+ + 开启后,会自动在响应Header中加入 + Strict-Transport-Security: + ... + max-age={{hsts.maxAge}} + ; includeSubDomains + ; preload + + + 修改 + + + |
+ |
| HSTS有效时间(max-age) | +
+
+
+
+
+
+
+ 秒
+
+ {{hsts.days}}天
+ + [1年/365天] + [6个月/182.5天] + [1个月/30天] + + |
+ |
| HSTS包含子域名(includeSubDomains) | +
+
+
+
+
+ |
+ |
| HSTS预加载(preload) | +
+
+
+
+
+ |
+ |
| HSTS生效的域名 | +
+
+
+
+
+
+
+
+
+ 取消
+
+
+
+
+ 如果没有设置域名的话,则默认支持所有的域名。 + |
+ |
| OCSP Stapling | +选中表示启用OCSP Stapling。 + |
+ |
| 客户端认证方式 | ++ + | +|
| 客户端认证CA证书 | +
+
+
+
+ 用来校验客户端证书以增强安全性,通常不需要设置。 + |
+ |
| 启用5秒盾 | +
+ |
+
| 验证有效期 | +
+
+
+ 秒
+
+ 单个客户端验证通过后,在这个有效期内不再重复验证;如果为0则表示系统默认。 + |
+
| 单IP最低QPS | +
+
+
+ 请求数/秒
+
+ 当某个IP在1分钟内平均QPS达到此值时,才会触发5秒盾;如果设置为0,表示任何访问都会触发。 + |
+
| 加入IP白名单 | +
+ 选中后,表示验证通过后,将访问者IP加入到临时白名单中,此IP下次访问时不再校验5秒盾;此白名单只对5秒盾有效,不影响其他规则。此选项主要用于可能无法正常使用Cookie的网站。 + |
+
| 例外URL | +
+ 如果填写了例外URL,表示这些URL跳过5秒盾不做处理。 + |
+
| 限制URL | +
+ 如果填写了限制URL,表示只对这些URL进行5秒盾处理;如果不填则表示支持所有的URL。 + |
+
| 匹配条件 | +
+ |
+
|
-
-
-
-
- |
- IP | -类型 | -级别 | -过期时间 | -备注 | -操作 | -
|---|---|---|---|---|---|---|
|
-
-
-
-
- |
-
-
-
- {{item.region}}
- | {{item.isp}}
-
- {{item.isp}}
-
-
- 添加于 {{item.createdTime}}
-
- @
-
- [黑白灰名单:{{item.list.name}}]
- [黑白灰名单:{{item.list.name}}
-
-
-
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
- [网站:{{item.policy.server.name}}]
-
-
-
-
-
- |
- - IPv4 - IPv4 - IPv6 - 所有IP - | -- {{item.eventLevelName}} - - - | -
-
- {{item.expiredTime}}
-
- 不过期
-
- 已过期
-
-
- {{formatSeconds(item.lifeSeconds)}}
- 已过期
-
- |
- - {{item.reason}} - - - - - - | -- - 修改 - 删除 - | -
{{message}}
| 对象类型 | -网站 | -||||
| 网站列表 | -
- 加载中...
- 暂时还没有可选的网站。
-
|
-