[GH-ISSUE #4637] 请问frps支持监听Unix域套接字吗? #3663

Closed
opened 2026-05-05 14:21:01 -06:00 by gitea-mirror · 1 comment
Owner

Originally created by @zc16607 on GitHub (Jan 15, 2025).
Original GitHub issue: https://github.com/fatedier/frp/issues/4637

Bug Description

frps.toml直接写成这样
bindAddr = "/tmp/frps.sock"
启动报错create server listener error, listen tcp: lookup /tmp/frps.sock: no such host

之所以想监听unix,是这样的:
我的公网服务器上同时部署了nginx和frps,现在我有一个内网机器上部署了nginx的网站,使用frpc连接到公网服务器上。
现在直接使用公网ip:vhostHttpsPort来请求接口,延迟在400ms,但是当我在这个基础上加一层nginx,即用nginx的443端口来代理
到127.0.0.1:vhostHttpsPort的frps上来访问,这个时候延迟暴增到720ms

我是真的有点想不通,明明就是同一台机器nginx转发一下到frps,怎么延迟就增加了两三百。问了ai,说了一堆优化办法,说用http、Unix域套接字、关闭nginx的ssl验证等。我试了关闭ssl验证,延迟降低到630ms了,但是离400还是差距很大,所以想用unix套接字技术,通过内核来建立nginx和frps的通信,看能不能大幅降低延迟。

或者有没有其它能降低延迟的办法,nginx上我部署了几个网站,用到通配证书,占用了443端口,所以frps就用的17002端口

frpc Version

0.61.1

frps Version

0.61.1

System Architecture

linux/amd64, windows/amd64

Configurations

frps.toml

bindAddr = "/tmp/frps.sock"
bindPort = 17000
vhostHttpPort = 17001
vhostHttpsPort = 17002
auth.token = "xxxxxxxx"

subdomainHost = "xxxxx.com"

nginx

location ^~ / {
    proxy_pass https://127.0.0.1:17002; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $http_connection; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    add_header X-Cache $upstream_cache_status; 
    proxy_ssl_verify off;  # 关闭ssl验证
    proxy_ssl_server_name on; 
    proxy_ssl_name $host; 
    add_header Strict-Transport-Security "max-age=31536000"; 
    add_header Cache-Control no-cache; 
}

Logs

No response

Steps to reproduce

...

Affected area

  • Docs
  • Installation
  • Performance and Scalability
  • Security
  • User Experience
  • Test and Release
  • Developer Infrastructure
  • Client Plugin
  • Server Plugin
  • Extensions
  • Others
Originally created by @zc16607 on GitHub (Jan 15, 2025). Original GitHub issue: https://github.com/fatedier/frp/issues/4637 ### Bug Description frps.toml直接写成这样 `bindAddr = "/tmp/frps.sock"` 启动报错create server listener error, listen tcp: lookup /tmp/frps.sock: no such host 之所以想监听unix,是这样的: 我的公网服务器上同时部署了nginx和frps,现在我有一个内网机器上部署了nginx的网站,使用frpc连接到公网服务器上。 现在直接使用公网ip:vhostHttpsPort来请求接口,延迟在400ms,但是当我在这个基础上加一层nginx,即用nginx的443端口来代理 到127.0.0.1:vhostHttpsPort的frps上来访问,这个时候延迟暴增到720ms 我是真的有点想不通,明明就是同一台机器nginx转发一下到frps,怎么延迟就增加了两三百。问了ai,说了一堆优化办法,说用http、Unix域套接字、关闭nginx的ssl验证等。我试了关闭ssl验证,延迟降低到630ms了,但是离400还是差距很大,所以想用unix套接字技术,通过内核来建立nginx和frps的通信,看能不能大幅降低延迟。 或者有没有其它能降低延迟的办法,nginx上我部署了几个网站,用到通配证书,占用了443端口,所以frps就用的17002端口 ### frpc Version 0.61.1 ### frps Version 0.61.1 ### System Architecture linux/amd64, windows/amd64 ### Configurations **frps.toml** ``` bindAddr = "/tmp/frps.sock" bindPort = 17000 vhostHttpPort = 17001 vhostHttpsPort = 17002 auth.token = "xxxxxxxx" subdomainHost = "xxxxx.com" ``` **nginx** ``` location ^~ / { proxy_pass https://127.0.0.1:17002; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; proxy_ssl_verify off; # 关闭ssl验证 proxy_ssl_server_name on; proxy_ssl_name $host; add_header Strict-Transport-Security "max-age=31536000"; add_header Cache-Control no-cache; } ``` ### Logs _No response_ ### Steps to reproduce 1. 2. 3. ... ### Affected area - [ ] Docs - [ ] Installation - [ ] Performance and Scalability - [ ] Security - [ ] User Experience - [ ] Test and Release - [ ] Developer Infrastructure - [ ] Client Plugin - [ ] Server Plugin - [ ] Extensions - [ ] Others
Author
Owner

@zc16607 commented on GitHub (Jan 15, 2025):

我已经通过另一个办法解决了,只在最外层的公网nginx上使用https,代理后到frps的http端口上,内网机器frpc也使用http协议与frps连接。nginx代理后延迟基本和直连frps一致,很满意。

<!-- gh-comment-id:2591566382 --> @zc16607 commented on GitHub (Jan 15, 2025): 我已经通过另一个办法解决了,只在最外层的公网nginx上使用https,代理后到frps的http端口上,内网机器frpc也使用http协议与frps连接。nginx代理后延迟基本和直连frps一致,很满意。
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#3663
No description provided.