mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2026-05-21 12:55:19 +08:00
修改反向代理实现方式
This commit is contained in:
@@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
// 源站服务配置
|
||||
type OriginServerConfig struct {
|
||||
type OriginConfig struct {
|
||||
Id int64 `yaml:"id" json:"id"` // ID
|
||||
IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用 TODO
|
||||
Version int `yaml:"version" json:"version"` // 版本
|
||||
@@ -43,7 +43,7 @@ type OriginServerConfig struct {
|
||||
Cert *sslconfigs.SSLCertConfig `yaml:"cert" json:"cert"` // 请求源服务器用的证书
|
||||
|
||||
// ftp
|
||||
FTP *OriginServerFTPConfig `yaml:"ftp" json:"ftp"`
|
||||
FTP *OriginFTPConfig `yaml:"ftp" json:"ftp"`
|
||||
|
||||
connTimeoutDuration time.Duration
|
||||
readTimeoutDuration time.Duration
|
||||
@@ -64,7 +64,7 @@ type OriginServerConfig struct {
|
||||
}
|
||||
|
||||
// 校验
|
||||
func (this *OriginServerConfig) Init() error {
|
||||
func (this *OriginConfig) Init() error {
|
||||
// 证书
|
||||
if this.Cert != nil {
|
||||
err := this.Cert.Init()
|
||||
@@ -131,7 +131,7 @@ func (this *OriginServerConfig) Init() error {
|
||||
}
|
||||
|
||||
// 候选对象代号
|
||||
func (this *OriginServerConfig) CandidateCodes() []string {
|
||||
func (this *OriginConfig) CandidateCodes() []string {
|
||||
codes := []string{strconv.FormatInt(this.Id, 10)}
|
||||
if len(this.Code) > 0 {
|
||||
codes = append(codes, this.Code)
|
||||
@@ -140,12 +140,12 @@ func (this *OriginServerConfig) CandidateCodes() []string {
|
||||
}
|
||||
|
||||
// 候选对象权重
|
||||
func (this *OriginServerConfig) CandidateWeight() uint {
|
||||
func (this *OriginConfig) CandidateWeight() uint {
|
||||
return this.Weight
|
||||
}
|
||||
|
||||
// 连接源站
|
||||
func (this *OriginServerConfig) Connect() (net.Conn, error) {
|
||||
func (this *OriginConfig) Connect() (net.Conn, error) {
|
||||
if this.Addr == nil {
|
||||
return nil, errors.New("origin server address should not be empty")
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package serverconfigs
|
||||
|
||||
// FTP源站配置
|
||||
type OriginServerFTPConfig struct {
|
||||
type OriginFTPConfig struct {
|
||||
Username string `yaml:"username" json:"username"` // 用户名
|
||||
Password string `yaml:"password" json:"password"` // 密码
|
||||
Dir string `yaml:"dir" json:"dir"` // 目录
|
||||
6
pkg/serverconfigs/origin_ref.go
Normal file
6
pkg/serverconfigs/origin_ref.go
Normal file
@@ -0,0 +1,6 @@
|
||||
package serverconfigs
|
||||
|
||||
type OriginRef struct {
|
||||
IsOn bool `yaml:"isOn" json:"isOn"`
|
||||
OriginId int64 `yaml:"originId" json:"originId"`
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package serverconfigs
|
||||
|
||||
// TODO 需要实现
|
||||
type OriginServerGroupConfig struct {
|
||||
Origins []*OriginServerConfig `yaml:"origins" json:"origins"` // 源站列表
|
||||
type OriginGroupConfig struct {
|
||||
Origins []*OriginConfig `yaml:"origins" json:"origins"` // 源站列表
|
||||
}
|
||||
|
||||
@@ -8,11 +8,13 @@ import (
|
||||
|
||||
// 反向代理设置
|
||||
type ReverseProxyConfig struct {
|
||||
Id int64 `yaml:"id" json:"id"` // ID
|
||||
IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用
|
||||
PrimaryOrigins []*OriginServerConfig `yaml:"primaryOrigins" json:"primaryOrigins"` // 主要源站列表
|
||||
BackupOrigins []*OriginServerConfig `yaml:"backupOrigins" json:"backupOrigins"` // 备用源站列表
|
||||
Scheduling *SchedulingConfig `yaml:"scheduling" json:"scheduling"` // 调度算法选项
|
||||
Id int64 `yaml:"id" json:"id"` // ID
|
||||
IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用
|
||||
PrimaryOrigins []*OriginConfig `yaml:"primaryOrigins" json:"primaryOrigins"` // 主要源站列表
|
||||
PrimaryOriginRefs []*OriginRef `yaml:"primaryOriginRefs" json:"primaryOriginRefs"` // 主要源站引用
|
||||
BackupOrigins []*OriginConfig `yaml:"backupOrigins" json:"backupOrigins"` // 备用源站列表
|
||||
BackupOriginRefs []*OriginRef `yaml:"backupOriginRefs" json:"backupOriginRefs"` // 备用源站引用
|
||||
Scheduling *SchedulingConfig `yaml:"scheduling" json:"scheduling"` // 调度算法选项
|
||||
|
||||
hasPrimaryOrigins bool
|
||||
hasBackupOrigins bool
|
||||
@@ -47,17 +49,17 @@ func (this *ReverseProxyConfig) Init() error {
|
||||
}
|
||||
|
||||
// 添加主源站配置
|
||||
func (this *ReverseProxyConfig) AddPrimaryOrigin(origin *OriginServerConfig) {
|
||||
func (this *ReverseProxyConfig) AddPrimaryOrigin(origin *OriginConfig) {
|
||||
this.PrimaryOrigins = append(this.PrimaryOrigins, origin)
|
||||
}
|
||||
|
||||
// 添加备用源站配置
|
||||
func (this *ReverseProxyConfig) AddBackupOrigin(origin *OriginServerConfig) {
|
||||
func (this *ReverseProxyConfig) AddBackupOrigin(origin *OriginConfig) {
|
||||
this.BackupOrigins = append(this.BackupOrigins, origin)
|
||||
}
|
||||
|
||||
// 取得下一个可用的后端服务
|
||||
func (this *ReverseProxyConfig) NextOrigin(call *shared.RequestCall) *OriginServerConfig {
|
||||
func (this *ReverseProxyConfig) NextOrigin(call *shared.RequestCall) *OriginConfig {
|
||||
this.schedulingLocker.Lock()
|
||||
defer this.schedulingLocker.Unlock()
|
||||
|
||||
@@ -88,7 +90,7 @@ func (this *ReverseProxyConfig) NextOrigin(call *shared.RequestCall) *OriginServ
|
||||
}
|
||||
}
|
||||
|
||||
return candidate.(*OriginServerConfig)
|
||||
return candidate.(*OriginConfig)
|
||||
}
|
||||
|
||||
// 设置调度算法
|
||||
|
||||
Reference in New Issue
Block a user