Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
企猫商务
frp
提交
ca88b07e
F
frp
项目概览
企猫商务
/
frp
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
frp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ca88b07e
编写于
8月 08, 2018
作者:
F
fatedier
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimize
上级
6e305db4
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
38 addition
and
27 deletion
+38
-27
cmd/frps/root.go
cmd/frps/root.go
+3
-3
conf/frps_full.ini
conf/frps_full.ini
+3
-3
models/config/server_common.go
models/config/server_common.go
+16
-13
server/service.go
server/service.go
+3
-1
utils/vhost/newhttp.go
utils/vhost/newhttp.go
+13
-7
未找到文件。
cmd/frps/root.go
浏览文件 @
ca88b07e
...
...
@@ -45,6 +45,7 @@ var (
proxyBindAddr
string
vhostHttpPort
int
vhostHttpsPort
int
vhostHttpTimeout
int64
dashboardAddr
string
dashboardPort
int
dashboardUser
string
...
...
@@ -61,7 +62,6 @@ var (
allowPorts
string
maxPoolCount
int64
maxPortsPerClient
int64
vhostHttpTimeout
int64
)
func
init
()
{
...
...
@@ -75,6 +75,7 @@ func init() {
rootCmd
.
PersistentFlags
()
.
StringVarP
(
&
proxyBindAddr
,
"proxy_bind_addr"
,
""
,
"0.0.0.0"
,
"proxy bind address"
)
rootCmd
.
PersistentFlags
()
.
IntVarP
(
&
vhostHttpPort
,
"vhost_http_port"
,
""
,
0
,
"vhost http port"
)
rootCmd
.
PersistentFlags
()
.
IntVarP
(
&
vhostHttpsPort
,
"vhost_https_port"
,
""
,
0
,
"vhost https port"
)
rootCmd
.
PersistentFlags
()
.
Int64VarP
(
&
vhostHttpTimeout
,
"vhost_http_timeout"
,
""
,
60
,
"vhost http response header timeout"
)
rootCmd
.
PersistentFlags
()
.
StringVarP
(
&
dashboardAddr
,
"dashboard_addr"
,
""
,
"0.0.0.0"
,
"dasboard address"
)
rootCmd
.
PersistentFlags
()
.
IntVarP
(
&
dashboardPort
,
"dashboard_port"
,
""
,
0
,
"dashboard port"
)
rootCmd
.
PersistentFlags
()
.
StringVarP
(
&
dashboardUser
,
"dashboard_user"
,
""
,
"admin"
,
"dashboard user"
)
...
...
@@ -88,7 +89,6 @@ func init() {
rootCmd
.
PersistentFlags
()
.
StringVarP
(
&
subDomainHost
,
"subdomain_host"
,
""
,
""
,
"subdomain host"
)
rootCmd
.
PersistentFlags
()
.
StringVarP
(
&
allowPorts
,
"allow_ports"
,
""
,
""
,
"allow ports"
)
rootCmd
.
PersistentFlags
()
.
Int64VarP
(
&
maxPortsPerClient
,
"max_ports_per_client"
,
""
,
0
,
"max ports per client"
)
rootCmd
.
PersistentFlags
()
.
Int64VarP
(
&
vhostHttpTimeout
,
"vhost_http_timeout"
,
""
,
30
,
"vhost http timeout"
)
}
var
rootCmd
=
&
cobra
.
Command
{
...
...
@@ -169,6 +169,7 @@ func parseServerCommonCfgFromCmd() (err error) {
g
.
GlbServerCfg
.
ProxyBindAddr
=
proxyBindAddr
g
.
GlbServerCfg
.
VhostHttpPort
=
vhostHttpPort
g
.
GlbServerCfg
.
VhostHttpsPort
=
vhostHttpsPort
g
.
GlbServerCfg
.
VhostHttpTimeout
=
vhostHttpTimeout
g
.
GlbServerCfg
.
DashboardAddr
=
dashboardAddr
g
.
GlbServerCfg
.
DashboardPort
=
dashboardPort
g
.
GlbServerCfg
.
DashboardUser
=
dashboardUser
...
...
@@ -193,7 +194,6 @@ func parseServerCommonCfgFromCmd() (err error) {
}
}
g
.
GlbServerCfg
.
MaxPortsPerClient
=
maxPortsPerClient
g
.
GlbServerCfg
.
VhostHttpTimeout
=
vhostHttpTimeout
return
}
...
...
conf/frps_full.ini
浏览文件 @
ca88b07e
...
...
@@ -20,6 +20,9 @@ kcp_bind_port = 7000
vhost_http_port
=
80
vhost_https_port
=
443
# response header timeout(seconds) for vhost http server, default is 60s
# vhost_http_timeout = 60
# set dashboard_addr and dashboard_port to view dashboard of frps
# dashboard_addr's default value is same with bind_addr
# dashboard is available only if dashboard_port is set
...
...
@@ -66,6 +69,3 @@ subdomain_host = frps.com
# if tcp stream multiplexing is used, default is true
tcp_mux
=
true
# if long connection for more than 30 seconds and disconnection of the server ,fix the pars .
vhost_http_timeout
=
30
\ No newline at end of file
models/config/server_common.go
浏览文件 @
ca88b07e
...
...
@@ -51,8 +51,11 @@ type ServerCommonConf struct {
VhostHttpPort
int
`json:"vhost_http_port"`
// if VhostHttpsPort equals 0, don't listen a public port for https protocol
VhostHttpsPort
int
`json:"vhost_http_port"`
DashboardAddr
string
`json:"dashboard_addr"`
VhostHttpsPort
int
`json:"vhost_http_port"`
VhostHttpTimeout
int64
`json:"vhost_http_timeout"`
DashboardAddr
string
`json:"dashboard_addr"`
// if DashboardPort equals 0, dashboard is not available
DashboardPort
int
`json:"dashboard_port"`
...
...
@@ -73,7 +76,6 @@ type ServerCommonConf struct {
MaxPortsPerClient
int64
`json:"max_ports_per_client"`
HeartBeatTimeout
int64
`json:"heart_beat_timeout"`
UserConnTimeout
int64
`json:"user_conn_timeout"`
VhostHttpTimeout
int64
`json:"vhost_http_timeout "`
}
func
GetDefaultServerConf
()
*
ServerCommonConf
{
...
...
@@ -85,6 +87,7 @@ func GetDefaultServerConf() *ServerCommonConf {
ProxyBindAddr
:
"0.0.0.0"
,
VhostHttpPort
:
0
,
VhostHttpsPort
:
0
,
VhostHttpTimeout
:
60
,
DashboardAddr
:
"0.0.0.0"
,
DashboardPort
:
0
,
DashboardUser
:
"admin"
,
...
...
@@ -103,7 +106,6 @@ func GetDefaultServerConf() *ServerCommonConf {
MaxPortsPerClient
:
0
,
HeartBeatTimeout
:
90
,
UserConnTimeout
:
10
,
VhostHttpTimeout
:
30
,
}
}
...
...
@@ -183,6 +185,16 @@ func UnmarshalServerConfFromIni(defaultCfg *ServerCommonConf, content string) (c
cfg
.
VhostHttpsPort
=
0
}
if
tmpStr
,
ok
=
conf
.
Get
(
"common"
,
"vhost_http_timeout"
);
ok
{
v
,
errRet
:=
strconv
.
ParseInt
(
tmpStr
,
10
,
64
)
if
errRet
!=
nil
||
v
<
0
{
err
=
fmt
.
Errorf
(
"Parse conf error: invalid vhost_http_timeout"
)
return
}
else
{
cfg
.
VhostHttpTimeout
=
v
}
}
if
tmpStr
,
ok
=
conf
.
Get
(
"common"
,
"dashboard_addr"
);
ok
{
cfg
.
DashboardAddr
=
tmpStr
}
else
{
...
...
@@ -302,15 +314,6 @@ func UnmarshalServerConfFromIni(defaultCfg *ServerCommonConf, content string) (c
cfg
.
HeartBeatTimeout
=
v
}
}
if
tmpStr
,
ok
=
conf
.
Get
(
"common"
,
"vhost_http_timeout"
);
ok
{
v
,
errRet
:=
strconv
.
ParseInt
(
tmpStr
,
10
,
64
)
if
errRet
!=
nil
{
err
=
fmt
.
Errorf
(
"Parse conf error: vhost_http_timeout is incorrect"
)
return
}
else
{
cfg
.
VhostHttpTimeout
=
v
}
}
return
}
...
...
server/service.go
浏览文件 @
ca88b07e
...
...
@@ -139,7 +139,9 @@ func NewService() (svr *Service, err error) {
// Create http vhost muxer.
if
cfg
.
VhostHttpPort
>
0
{
rp
:=
vhost
.
NewHttpReverseProxy
()
rp
:=
vhost
.
NewHttpReverseProxy
(
vhost
.
HttpReverseProxyOptions
{
ResponseHeaderTimeoutS
:
cfg
.
VhostHttpTimeout
,
})
svr
.
httpReverseProxy
=
rp
address
:=
fmt
.
Sprintf
(
"%s:%d"
,
cfg
.
ProxyBindAddr
,
cfg
.
VhostHttpPort
)
...
...
utils/vhost/newhttp.go
浏览文件 @
ca88b07e
...
...
@@ -25,15 +25,12 @@ import (
"sync"
"time"
"github.com/fatedier/frp/g"
frpLog
"github.com/fatedier/frp/utils/log"
"github.com/fatedier/golib/pool"
)
var
(
responseHeaderTimeout
=
time
.
Duration
(
g
.
GlbServerCfg
.
VhostHttpTimeout
)
*
time
.
Second
ErrRouterConfigConflict
=
errors
.
New
(
"router config conflict"
)
ErrNoDomain
=
errors
.
New
(
"no such domain"
)
)
...
...
@@ -48,17 +45,26 @@ func getHostFromAddr(addr string) (host string) {
return
}
type
HttpReverseProxyOptions
struct
{
ResponseHeaderTimeoutS
int64
}
type
HttpReverseProxy
struct
{
proxy
*
ReverseProxy
vhostRouter
*
VhostRouters
cfgMu
sync
.
RWMutex
responseHeaderTimeout
time
.
Duration
cfgMu
sync
.
RWMutex
}
func
NewHttpReverseProxy
()
*
HttpReverseProxy
{
func
NewHttpReverseProxy
(
option
HttpReverseProxyOptions
)
*
HttpReverseProxy
{
if
option
.
ResponseHeaderTimeoutS
<=
0
{
option
.
ResponseHeaderTimeoutS
=
60
}
rp
:=
&
HttpReverseProxy
{
vhostRouter
:
NewVhostRouters
(),
responseHeaderTimeout
:
time
.
Duration
(
option
.
ResponseHeaderTimeoutS
)
*
time
.
Second
,
vhostRouter
:
NewVhostRouters
(),
}
proxy
:=
&
ReverseProxy
{
Director
:
func
(
req
*
http
.
Request
)
{
...
...
@@ -77,7 +83,7 @@ func NewHttpReverseProxy() *HttpReverseProxy {
}
},
Transport
:
&
http
.
Transport
{
ResponseHeaderTimeout
:
responseHeaderTimeout
,
ResponseHeaderTimeout
:
r
p
.
r
esponseHeaderTimeout
,
DisableKeepAlives
:
true
,
DialContext
:
func
(
ctx
context
.
Context
,
network
,
addr
string
)
(
net
.
Conn
,
error
)
{
url
:=
ctx
.
Value
(
"url"
)
.
(
string
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录