刘河 преди 5 години
родител
ревизия
90e78bf413
променени са 3 файла, в които са добавени 16 реда и са изтрити 4 реда
  1. 3 0
      conf/nps.conf
  2. 2 1
      docs/nps_extend.md
  3. 11 3
      server/proxy/tcp.go

+ 3 - 0
conf/nps.conf

@@ -42,6 +42,9 @@ web_password=123
 web_port = 8080
 web_ip=0.0.0.0
 web_base_url=
+web_open_ssl=false
+web_cert_file=conf/server.pem
+web_key_file=conf/server.key
 # if web under proxy use sub path. like http://host/nps need this.
 #web_base_url=/nps
 

+ 2 - 1
docs/nps_extend.md

@@ -44,7 +44,8 @@ server {
     }
 }
 ```
-
+## web管理使用https
+如果web管理需要使用https,可以在配置文件`nps.conf`中设置`web_open_ssl=true`,并配置`web_cert_file`和`web_key_file`
 ## web使用Caddy代理
 
 如果将web配置到Caddy代理,实现子路径访问nps,可以这样配置.

+ 11 - 3
server/proxy/tcp.go

@@ -65,13 +65,21 @@ func (s *WebServer) Start() error {
 	beego.BConfig.WebConfig.Session.SessionOn = true
 	beego.SetStaticPath(beego.AppConfig.String("web_base_url")+"/static", filepath.Join(common.GetRunPath(), "web", "static"))
 	beego.SetViewsPath(filepath.Join(common.GetRunPath(), "web", "views"))
-	if l, err := connection.GetWebManagerListener(); err == nil {
+	err := errors.New("Web management startup failure ")
+	var l net.Listener
+	if l, err = connection.GetWebManagerListener(); err == nil {
 		beego.InitBeforeHTTPRun()
-		http.Serve(l, beego.BeeApp.Handlers)
+		if beego.AppConfig.String("web_open_ssl") == "true" {
+			keyPath := beego.AppConfig.String("web_key_file")
+			certPath := beego.AppConfig.String("web_cert_file")
+			err = http.ServeTLS(l, beego.BeeApp.Handlers, certPath, keyPath)
+		} else {
+			err = http.Serve(l, beego.BeeApp.Handlers)
+		}
 	} else {
 		logs.Error(err)
 	}
-	return errors.New("Web management startup failure")
+	return err
 }
 
 func (s *WebServer) Close() error {