[GH-ISSUE #53] 如何配合nginx使用? #18

Closed
opened 2026-05-05 11:32:15 -06:00 by gitea-mirror · 10 comments
Owner

Originally created by @openmynet on GitHub (Jul 26, 2016).
Original GitHub issue: https://github.com/fatedier/frp/issues/53

远程服务器里有web服务,使用nginx作为服务前端,frp要如何配合nginx使用?
以下配置测试了行不通。需要如何配置
nginx配置:
server {
listen 80;
server_name demo.*;
location / {
proxy_pass http://127.0.0.1:7000;
}
}
frps.ini 配置
[common]
bind_port = 7000
vhost_http_port = 8008
[web01]
type = http
custom_domains = demo.exampledomain.com

frpc.ini 配置
[common]
server_addr = 162...*
[web01]
type = http
local_ip = 127.0.0.1
local_port = 80

Originally created by @openmynet on GitHub (Jul 26, 2016). Original GitHub issue: https://github.com/fatedier/frp/issues/53 远程服务器里有web服务,使用nginx作为服务前端,frp要如何配合nginx使用? 以下配置测试了行不通。需要如何配置 nginx配置: server { listen 80; server_name demo.*; location / { proxy_pass http://127.0.0.1:7000; } } frps.ini 配置 [common] bind_port = 7000 vhost_http_port = 8008 [web01] type = http custom_domains = demo.exampledomain.com frpc.ini 配置 [common] server_addr = 162._._.* [web01] type = http local_ip = 127.0.0.1 local_port = 80
gitea-mirror 2026-05-05 11:32:15 -06:00
  • closed this issue
  • added the
    question
    label
Author
Owner

@fatedier commented on GitHub (Jul 26, 2016):

我测试了一下这种情况是可以通过的,你可以检查下以下几个地方是否存在问题:

  1. 配置文件中的 auth_token 参数有没有配置?需要在 frps.ini 的 [web01] 以及 frpc.ini 的 [common] 里配置相同的 auth_token。
  2. 检查下 frps 和 frpc 是否启动成功了,日志里是否有出错信息,没有配置 auth_token 程序会输出错误信息后退出。
  3. proxy_pass http://127.0.0.1:7000 这个是 web 服务的地址吗?检查端口是否正确。可以直接访问 nginx 看是否有问题。
  4. 如果仍然有问题,可以贴一下出错的详细信息。
<!-- gh-comment-id:235166746 --> @fatedier commented on GitHub (Jul 26, 2016): 我测试了一下这种情况是可以通过的,你可以检查下以下几个地方是否存在问题: 1. 配置文件中的 auth_token 参数有没有配置?需要在 frps.ini 的 [web01] 以及 frpc.ini 的 [common] 里配置相同的 auth_token。 2. 检查下 frps 和 frpc 是否启动成功了,日志里是否有出错信息,没有配置 auth_token 程序会输出错误信息后退出。 3. `proxy_pass http://127.0.0.1:7000` 这个是 web 服务的地址吗?检查端口是否正确。可以直接访问 nginx 看是否有问题。 4. 如果仍然有问题,可以贴一下出错的详细信息。
Author
Owner

@openmynet commented on GitHub (Jul 26, 2016):

1、配置文件中的auth_token 已配置成相同的了
2、为避免影响,暂时将nginx关掉了,frps.ini 中的 vhost_http_port = 80
3、服务端的frps从日志上看没有报错都是success
4、客户端的frpc 日志如下:
2016/07/26 15:21:28 [main.go:109] [I] Start frpc success 2016/07/26 15:21:29 [control.go:181] [I] Start to send heartbeat to frps 2016/07/26 15:21:48 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:62754->127.0.0.1:80: read tcp 192.168.1.132:62755->162.*.*.201:7000: use of closed network connection 2016/07/26 15:21:51 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:62758->127.0.0.1:80: read tcp 192.168.1.132:62759->162.*.*.201:7000: use of closed network connection

<!-- gh-comment-id:235186238 --> @openmynet commented on GitHub (Jul 26, 2016): 1、配置文件中的auth_token 已配置成相同的了 2、为避免影响,暂时将nginx关掉了,frps.ini 中的 vhost_http_port = 80 3、服务端的frps从日志上看没有报错都是success 4、客户端的frpc 日志如下: `2016/07/26 15:21:28 [main.go:109] [I] Start frpc success 2016/07/26 15:21:29 [control.go:181] [I] Start to send heartbeat to frps 2016/07/26 15:21:48 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:62754->127.0.0.1:80: read tcp 192.168.1.132:62755->162.*.*.201:7000: use of closed network connection 2016/07/26 15:21:51 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:62758->127.0.0.1:80: read tcp 192.168.1.132:62759->162.*.*.201:7000: use of closed network connection `
Author
Owner

@fatedier commented on GitHub (Jul 26, 2016):

你这个 frpc 好像用的不是最新的 0.7.0 的版本,建议更新,有没有可能 frps 更新了 0.7.0 的版本,因为协议不兼容导致 frpc 无法正常工作。

从日志来看像是连接刚建立就被中断了,如果不是上面的原因,可以将 frp 的代理类型 设置成 tcp 的方式测试一下是否正常,日志级别设置成 debug,方便定位问题。

<!-- gh-comment-id:235231315 --> @fatedier commented on GitHub (Jul 26, 2016): 你这个 frpc 好像用的不是最新的 `0.7.0` 的版本,建议更新,有没有可能 frps 更新了 0.7.0 的版本,因为协议不兼容导致 frpc 无法正常工作。 从日志来看像是连接刚建立就被中断了,如果不是上面的原因,可以将 frp 的代理类型 设置成 tcp 的方式测试一下是否正常,日志级别设置成 debug,方便定位问题。
Author
Owner

@openmynet commented on GitHub (Jul 26, 2016):

frpc是winx64版本的0.7.0 ,包里面的frps.ini和linux64包里的frps.ini略有不同

<!-- gh-comment-id:235239724 --> @openmynet commented on GitHub (Jul 26, 2016): frpc是winx64版本的0.7.0 ,包里面的frps.ini和linux64包里的frps.ini略有不同
Author
Owner

@openmynet commented on GitHub (Jul 26, 2016):

以下是debug级别的通信信息:
2016/07/26 19:20:28 [main.go:109] [I] Start frpc success 2016/07/26 19:20:28 [control.go:160] [D] ProxyName [web01], read [{"type":3,"code":0,"msg":""} ] 2016/07/26 19:20:28 [control.go:173] [D] ProxyName [web01], connect to server [162.0.0.0:7000] success! 2016/07/26 19:20:28 [control.go:181] [I] Start to send heartbeat to frps 2016/07/26 19:20:48 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:20:49 [control.go:101] [D] ProxyName [web01], receive heartbeat response 2016/07/26 19:21:06 [control.go:104] [D] ProxyName [web01], new user connection 2016/07/26 19:21:06 [client.go:91] [D] Join two connections, (l[127.0.0.1:65462] r[127.0.0.1:80]) (l[192.168.1.132:65463] r[162.0.0.0:7000]) 2016/07/26 19:21:06 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:65462->127.0.0.1:80: read tcp 192.168.1.132:65463->162.0.0.0:7000: use of closed network connection 2016/07/26 19:21:07 [control.go:104] [D] ProxyName [web01], new user connection 2016/07/26 19:21:07 [client.go:91] [D] Join two connections, (l[127.0.0.1:65466] r[127.0.0.1:80]) (l[192.168.1.132:65467] r[162.0.0.0:7000]) 2016/07/26 19:21:07 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:65466->127.0.0.1:80: read tcp 192.168.1.132:65467->162.0.0.0:7000: use of closed network connection 2016/07/26 19:21:08 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:21:09 [control.go:101] [D] ProxyName [web01], receive heartbeat response 2016/07/26 19:21:28 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:21:29 [control.go:101] [D] ProxyName [web01], receive heartbeat response 2016/07/26 19:21:48 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:21:49 [control.go:101] [D] ProxyName [web01], receive heartbeat response

<!-- gh-comment-id:235240378 --> @openmynet commented on GitHub (Jul 26, 2016): 以下是debug级别的通信信息: `2016/07/26 19:20:28 [main.go:109] [I] Start frpc success 2016/07/26 19:20:28 [control.go:160] [D] ProxyName [web01], read [{"type":3,"code":0,"msg":""} ] 2016/07/26 19:20:28 [control.go:173] [D] ProxyName [web01], connect to server [162.0.0.0:7000] success! 2016/07/26 19:20:28 [control.go:181] [I] Start to send heartbeat to frps 2016/07/26 19:20:48 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:20:49 [control.go:101] [D] ProxyName [web01], receive heartbeat response 2016/07/26 19:21:06 [control.go:104] [D] ProxyName [web01], new user connection 2016/07/26 19:21:06 [client.go:91] [D] Join two connections, (l[127.0.0.1:65462] r[127.0.0.1:80]) (l[192.168.1.132:65463] r[162.0.0.0:7000]) 2016/07/26 19:21:06 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:65462->127.0.0.1:80: read tcp 192.168.1.132:65463->162.0.0.0:7000: use of closed network connection 2016/07/26 19:21:07 [control.go:104] [D] ProxyName [web01], new user connection 2016/07/26 19:21:07 [client.go:91] [D] Join two connections, (l[127.0.0.1:65466] r[127.0.0.1:80]) (l[192.168.1.132:65467] r[162.0.0.0:7000]) 2016/07/26 19:21:07 [conn.go:182] [W] join connections error, read tcp 127.0.0.1:65466->127.0.0.1:80: read tcp 192.168.1.132:65467->162.0.0.0:7000: use of closed network connection 2016/07/26 19:21:08 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:21:09 [control.go:101] [D] ProxyName [web01], receive heartbeat response 2016/07/26 19:21:28 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:21:29 [control.go:101] [D] ProxyName [web01], receive heartbeat response 2016/07/26 19:21:48 [control.go:185] [D] Send heartbeat to server 2016/07/26 19:21:49 [control.go:101] [D] ProxyName [web01], receive heartbeat response `
Author
Owner

@fatedier commented on GitHub (Jul 26, 2016):

从日志里面打印的代码行数来看,确实不是 0.7.0 版本的客户端,你用 ./frpc.exe --version 看一下版本号是否正确。而且我看 0.7.0 版本 windows 和 linux 压缩文件里的 frps.ini 是一样的。

<!-- gh-comment-id:235277600 --> @fatedier commented on GitHub (Jul 26, 2016): 从日志里面打印的代码行数来看,确实不是 0.7.0 版本的客户端,你用 ./frpc.exe --version 看一下版本号是否正确。而且我看 0.7.0 版本 windows 和 linux 压缩文件里的 frps.ini 是一样的。
Author
Owner

@openmynet commented on GitHub (Jul 27, 2016):

问题找到了,frpc确实不是0.7.0的,包是使用远程服务器下载的,不知怎么的下到了0.6.0的
贴下运行nginx和frps成功后的配置
nginx:

map $http_x_forwarded_for $clientRealip {
   "" $remote_addr;
   ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}

server {
       listen 80;
       server_name demo.*;
       ## 将demo(demo.open.it)二级域名转发到8008端口
       location / {
           proxy_pass http://127.0.0.1:8008;  # frps.ini 里的 vhost_http_port = 8008
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

frps.ini 配置 修改

[common]
 #与nginx里的端口号相匹配
 vhost_http_port = 8008
[web01]
 type = http
 auth_token = demo.open.it
# 域名
 custom_domains = demo.open.it

frpc.ini 配置

[common]
auth_token = demo.open.it

其他的使用默认配置

<!-- gh-comment-id:235533783 --> @openmynet commented on GitHub (Jul 27, 2016): 问题找到了,frpc确实不是0.7.0的,包是使用远程服务器下载的,不知怎么的下到了0.6.0的 贴下运行nginx和frps成功后的配置 nginx: ``` map $http_x_forwarded_for $clientRealip { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; } server { listen 80; server_name demo.*; ## 将demo(demo.open.it)二级域名转发到8008端口 location / { proxy_pass http://127.0.0.1:8008; # frps.ini 里的 vhost_http_port = 8008 proxy_set_header Host $host; proxy_set_header X-Real-IP $clientRealip; # $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` frps.ini 配置 修改 ``` ini [common] #与nginx里的端口号相匹配 vhost_http_port = 8008 [web01] type = http auth_token = demo.open.it # 域名 custom_domains = demo.open.it ``` frpc.ini 配置 ``` ini [common] auth_token = demo.open.it ``` 其他的使用默认配置
Author
Owner

@se77en commented on GitHub (Aug 26, 2016):

@openmynet 请教一下,我客户端也配置了一个 nginx,然后拿不到真实 IP,access-log 打出来都是 127.0.0.1,frp 配置方式是客户端特权模式

<!-- gh-comment-id:242651927 --> @se77en commented on GitHub (Aug 26, 2016): @openmynet 请教一下,我客户端也配置了一个 nginx,然后拿不到真实 IP,access-log 打出来都是 127.0.0.1,frp 配置方式是客户端特权模式
Author
Owner

@openmynet commented on GitHub (Aug 30, 2016):

@se77en 客户端的nginx配置和网站服务器nginx配置类似

server {
       listen 80;
       server_name demo.*;
       location / {
            proxy_pass http://127.0.0.1:8080; # 本地服务器地址
            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_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_max_temp_file_size 0;
            proxy_redirect off;
            proxy_read_timeout 240s;
       }
}
webclient => remote.nginx => frps =>frpc =>local.nginx => local.server
<!-- gh-comment-id:243350027 --> @openmynet commented on GitHub (Aug 30, 2016): @se77en 客户端的nginx配置和网站服务器nginx配置类似 ``` server { listen 80; server_name demo.*; location / { proxy_pass http://127.0.0.1:8080; # 本地服务器地址 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_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 240s; } } ``` ``` webclient => remote.nginx => frps =>frpc =>local.nginx => local.server ```
Author
Owner

@yjiawqgj commented on GitHub (Aug 17, 2021):

问题找到了,frpc确实不是0.7.0的,包是使用远程服务器下载的,不知怎么下到了0.6.0的
贴下运行nginx和frps成功后的配置
nginx:

map $http_x_forwarded_for $clientRealip {
   "" $remote_addr;
   ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}

server {
       listen 80;
       server_name demo.*;
       ## 将demo(demo.open.it)二级域名转发到8008端口
       location / {
           proxy_pass http://127.0.0.1:8008;  # frps.ini 里的 vhost_http_port = 8008
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

frps.ini 配置修改

[共同] 
 #与nginx的里的端口号相匹配
 vhost_http_port = 8008
 [WEB01]
 类型= HTTP
 的auth_token = demo.open.it
 #域名
 custom_domains = demo.open.it

frpc.ini 配置

[通用] 
auth_token = demo.open.it

其他的使用默认配置

请问你是用nginx来免端口访问内网的吗?我使用的是最新0.37.1版本,已经不适用你的配置了。能帮我看一下吗?如果可以请回复。

<!-- gh-comment-id:900370567 --> @yjiawqgj commented on GitHub (Aug 17, 2021): > 问题找到了,frpc确实不是0.7.0的,包是使用远程服务器下载的,不知怎么下到了0.6.0的 > 贴下运行nginx和frps成功后的配置 > nginx: > > ``` > map $http_x_forwarded_for $clientRealip { > "" $remote_addr; > ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; > } > > server { > listen 80; > server_name demo.*; > ## 将demo(demo.open.it)二级域名转发到8008端口 > location / { > proxy_pass http://127.0.0.1:8008; # frps.ini 里的 vhost_http_port = 8008 > proxy_set_header Host $host; > proxy_set_header X-Real-IP $clientRealip; # $remote_addr; > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > } > } > ``` > > frps.ini 配置修改 > > ```ini > [共同] > #与nginx的里的端口号相匹配 > vhost_http_port = 8008 > [WEB01] > 类型= HTTP > 的auth_token = demo.open.it > #域名 > custom_domains = demo.open.it > ``` > > frpc.ini 配置 > > ```ini > [通用] > auth_token = demo.open.it > ``` > > 其他的使用默认配置 请问你是用nginx来免端口访问内网的吗?我使用的是最新0.37.1版本,已经不适用你的配置了。能帮我看一下吗?如果可以请回复。
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#18
No description provided.