fix: 解决网站设置 https 情况下,设置默认网站失败的问题 (#1023)
This commit is contained in:
@@ -912,7 +912,23 @@ func (w WebsiteService) OpWebsiteLog(req request.WebsiteLogReq) (*response.Websi
|
|||||||
func (w WebsiteService) ChangeDefaultServer(id uint) error {
|
func (w WebsiteService) ChangeDefaultServer(id uint) error {
|
||||||
defaultWebsite, _ := websiteRepo.GetFirst(websiteRepo.WithDefaultServer())
|
defaultWebsite, _ := websiteRepo.GetFirst(websiteRepo.WithDefaultServer())
|
||||||
if defaultWebsite.ID > 0 {
|
if defaultWebsite.ID > 0 {
|
||||||
if err := updateNginxConfig(constant.NginxScopeServer, []dto.NginxParam{{Name: "listen", Params: []string{"80"}}}, &defaultWebsite); err != nil {
|
params, err := getNginxParamsByKeys(constant.NginxScopeServer, []string{"listen"}, &defaultWebsite)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var changeParams []dto.NginxParam
|
||||||
|
for _, param := range params {
|
||||||
|
paramLen := len(param.Params)
|
||||||
|
var newParam []string
|
||||||
|
if paramLen > 1 && param.Params[paramLen-1] == components.DefaultServer {
|
||||||
|
newParam = param.Params[:paramLen-1]
|
||||||
|
}
|
||||||
|
changeParams = append(changeParams, dto.NginxParam{
|
||||||
|
Name: param.Name,
|
||||||
|
Params: newParam,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if err := updateNginxConfig(constant.NginxScopeServer, changeParams, &defaultWebsite); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defaultWebsite.DefaultServer = false
|
defaultWebsite.DefaultServer = false
|
||||||
@@ -925,7 +941,28 @@ func (w WebsiteService) ChangeDefaultServer(id uint) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := updateNginxConfig(constant.NginxScopeServer, []dto.NginxParam{{Name: "listen", Params: []string{"80", "default_server"}}}, &website); err != nil {
|
params, err := getNginxParamsByKeys(constant.NginxScopeServer, []string{"listen"}, &website)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var changeParams []dto.NginxParam
|
||||||
|
for _, param := range params {
|
||||||
|
paramLen := len(param.Params)
|
||||||
|
bind := param.Params[0]
|
||||||
|
var newParam []string
|
||||||
|
if bind == "80" || bind == "443" || bind == "[::]:80" || bind == "[::]:443" {
|
||||||
|
if param.Params[paramLen-1] == components.DefaultServer {
|
||||||
|
newParam = param.Params
|
||||||
|
} else {
|
||||||
|
newParam = append(param.Params, components.DefaultServer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
changeParams = append(changeParams, dto.NginxParam{
|
||||||
|
Name: param.Name,
|
||||||
|
Params: newParam,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if err := updateNginxConfig(constant.NginxScopeServer, changeParams, &website); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
website.DefaultServer = true
|
website.DefaultServer = true
|
||||||
|
@@ -65,7 +65,19 @@ func (s *Server) FindDirectives(directiveName string) []IDirective {
|
|||||||
directives = append(directives, directive.GetBlock().FindDirectives(directiveName)...)
|
directives = append(directives, directive.GetBlock().FindDirectives(directiveName)...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if directiveName == "listen" {
|
||||||
|
for _, listen := range s.Listens {
|
||||||
|
params := []string{listen.Bind}
|
||||||
|
params = append(params, listen.Parameters...)
|
||||||
|
if listen.DefaultServer != "" {
|
||||||
|
params = append(params, DefaultServer)
|
||||||
|
}
|
||||||
|
directives = append(directives, &Directive{
|
||||||
|
Name: "listen",
|
||||||
|
Parameters: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
return directives
|
return directives
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,14 +87,12 @@ func (s *Server) UpdateDirective(key string, params []string) {
|
|||||||
}
|
}
|
||||||
if key == "listen" {
|
if key == "listen" {
|
||||||
defaultServer := false
|
defaultServer := false
|
||||||
if len(params) > 1 && params[1] == "default_server" {
|
paramLen := len(params)
|
||||||
|
if paramLen > 0 && params[paramLen-1] == "default_server" {
|
||||||
|
params = params[:paramLen-1]
|
||||||
defaultServer = true
|
defaultServer = true
|
||||||
}
|
}
|
||||||
if len(params) > 2 {
|
s.UpdateListen(params[0], defaultServer, params[1:]...)
|
||||||
s.UpdateListen(params[0], defaultServer, params[2:]...)
|
|
||||||
} else {
|
|
||||||
s.UpdateListen(params[0], defaultServer)
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -52,8 +52,8 @@ func (sl *ServerListen) GetBlock() IBlock {
|
|||||||
|
|
||||||
func (sl *ServerListen) GetParameters() []string {
|
func (sl *ServerListen) GetParameters() []string {
|
||||||
params := []string{sl.Bind}
|
params := []string{sl.Bind}
|
||||||
params = append(params, sl.DefaultServer)
|
|
||||||
params = append(params, sl.Parameters...)
|
params = append(params, sl.Parameters...)
|
||||||
|
params = append(params, sl.DefaultServer)
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user