diff --git a/CHANGELOG b/CHANGELOG
index 0ae438e..0e695fa 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+2 Oct: AnyProxy 3.7.7:
+
+    * bugfix for proxy.close() ref #36
+
 9 Sep: AnyProxy 3.7.6:
 
     * optimize detail panel, ref #35
diff --git a/lib/log.js b/lib/log.js
index 2aae613..4fc271d 100644
--- a/lib/log.js
+++ b/lib/log.js
@@ -8,7 +8,6 @@ function printLog(content,type){
 	if(!ifPrint) return;
 
 	var tip = content;
-	
 	console.log(tip);
 }
 
diff --git a/lib/webInterface.js b/lib/webInterface.js
index 8b1c15b..b2b1fab 100644
--- a/lib/webInterface.js
+++ b/lib/webInterface.js
@@ -18,7 +18,8 @@ function webInterface(config){
         ipAddress     = config.ip,
         userRule      = config.userRule,
         ruleSummary   = "",
-        customMenu    = [];
+        customMenu    = [],
+        server;
 
     try{
         ruleSummary = userRule.summary();
@@ -111,13 +112,14 @@ function webInterface(config){
     //plugin from rule file
     if(typeof userRule._plugIntoWebinterface == "function"){
         userRule._plugIntoWebinterface(app,function(){
-            app.listen(port);
+            server = app.listen(port);
         });
     }else{
-        app.listen(port);
+        server = app.listen(port);
     }
 
-    self.app  = app;
+    self.app    = app;
+    self.server = server;
 }
 
 inherits(webInterface, events.EventEmitter);
diff --git a/package.json b/package.json
index d7fd5c5..3596d97 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "anyproxy",
-  "version": "3.7.6",
+  "version": "3.7.7",
   "description": "A fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.",
   "main": "proxy.js",
   "bin": {
diff --git a/proxy.js b/proxy.js
index 4e0f651..861d735 100644
--- a/proxy.js
+++ b/proxy.js
@@ -63,9 +63,7 @@ function proxyServer(option){
         socketPort          = option.socketPort    || DEFAULT_WEBSOCKET_PORT, //port for websocket
         proxyConfigPort     = option.webConfigPort || DEFAULT_CONFIG_PORT,    //port to ui config server
         disableWebInterface = !!option.disableWebInterface,
-        ifSilent            = !!option.silent,
-        webServerInstance,
-        ws;
+        ifSilent            = !!option.silent;
 
     if(ifSilent){
         logUtil.setPrintStatus(false);
@@ -131,8 +129,8 @@ function proxyServer(option){
 
             //start web socket service
             function(callback){
-                ws = new wsServer({port : socketPort});
-                callback(null)
+                self.ws = new wsServer({port : socketPort});
+                callback(null);
             },
 
             //start web interface
@@ -147,7 +145,7 @@ function proxyServer(option){
                         ip           : ip.address()
                     };
 
-                    webServerInstance = new webInterface(config);
+                    self.webServerInstance = new webInterface(config);
                 }
                 callback(null);
             },
@@ -189,7 +187,9 @@ function proxyServer(option){
 
     self.close = function(){
         self.httpProxyServer && self.httpProxyServer.close();
-        logUtil.printLog(color.green("server closed :" + proxyHost + ":" + proxyPort));
+        self.ws && self.ws.closeAll();
+        self.webServerInstance && self.webServerInstance.server && self.webServerInstance.server.close();
+        logUtil.printLog("server closed :" + proxyHost + ":" + proxyPort);
     }
 }