From 53e57ea70d09edf7d4548a1484fa25adef56026a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B2=B3?= Date: Sun, 13 Jan 2019 22:02:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E5=AD=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++------ utils/util.go | 9 +++++---- web/views/index/index.html | 11 +++-------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index e570c1b..0c65676 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ easyProxy是一款轻量级、高性能、功能最为强大的**内网穿透** 目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。 -支持客户端与服务端连接中断自动重连,多路传输,大大的提高请求处理速度,go语言编写,无第三方依赖。 +支持客户端与服务端连接中断自动重连,多路传输,大大的提高请求处理速度,go语言编写,无第三方依赖,各个平台都已经编译在release中,普通个人场景下,内存使用量在10M以下。 ## 背景 ![image](https://github.com/cnlh/easyProxy/blob/master/image/web.png?raw=true) @@ -185,11 +185,7 @@ server { listen 80; server_name a.ourcauc.com; location / { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $http_host; - proxy_set_header X-Nginx-Proxy true; - proxy_set_header Connection ""; + #其他配置,例如ssl proxy_pass http://127.0.0.1:8024; } } diff --git a/utils/util.go b/utils/util.go index 90a92d5..50d0e09 100755 --- a/utils/util.go +++ b/utils/util.go @@ -147,15 +147,14 @@ func GetIntNoerrByStr(str string) int { // io.copy的优化版,读取buffer长度原为32*1024,与snappy不同,导致读取出的内容存在差异,不利于解密,特此修改 -//废除 +//内存优化 用到pool,快速回收 func copyBuffer(dst io.Writer, src io.Reader) (written int64, err error) { - //TODO 回收问题 - buf := bufPoolCopy.Get().([]byte) - defer bufPoolCopy.Put(buf) for { + buf := bufPoolCopy.Get().([]byte) nr, er := src.Read(buf) if nr > 0 { nw, ew := dst.Write(buf[0:nr]) + bufPoolCopy.Put(buf) if nw > 0 { written += int64(nw) } @@ -167,6 +166,8 @@ func copyBuffer(dst io.Writer, src io.Reader) (written int64, err error) { err = io.ErrShortWrite break } + }else { + bufPoolCopy.Put(buf) } if er != nil { if er != io.EOF { diff --git a/web/views/index/index.html b/web/views/index/index.html index b35f232..e1434f3 100755 --- a/web/views/index/index.html +++ b/web/views/index/index.html @@ -36,11 +36,6 @@ server_name a.proxy.com b.proxy.com;#也可以是泛解析*.proxy.com #ssl等配置 location / { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $http_host; - proxy_set_header X-Nginx-Proxy true; - proxy_set_header Connection ""; proxy_pass http://127.0.0.1:{{.proxyPort}}; } } @@ -140,10 +135,10 @@

多客户端模式: -

  • 服务端启动:./easyProxy -mode=webServer -tcpport=8284
  • -
  • 客户端启动:./easyProxy -server={{.ip}}:{{.p}} -vkey=xxx(见管理列表的客户端启动模式)
  • +
  • 服务端启动:./proxy_server
  • +
  • 客户端启动:./proxy_client -server={{.ip}}:{{.p}} -vkey=xxx(见管理列表的客户端启动模式)
  • -

    支持客户端同时建立多条隧道,例如单个通道时命令为./easyProxy -server={{.ip}}:{{.p}} -vkey=ccc,如果要支持另外一个隧道,则对应的执行命令为./easyProxy +

    支持客户端同时建立多条隧道,例如单个通道时命令为./proxy_client -server={{.ip}}:{{.p}} -vkey=ccc,如果要支持另外一个隧道,则对应的执行命令为./proxy_client -server={{.ip}}:{{.p}} -vkey=ccc,ddd,即用逗号分隔开多个vkey,适用于所有模式!