你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

利用frp做内网穿透去访问家用电脑上的web服务

[复制链接]
gaosmile 发布时间:2020-10-30 18:37
大厂云做活动经常是1H 1G 1M的带宽,机器性能有限,如果web业务稍微大一些,可能连Mysql都跑不动。我们可以利用frp做内网穿透去访问家用电脑上的web服务。至少家用电脑是真材实料的物理核心。也可以充分利用带宽。
) P9 t& o3 S( T* v
微信图片_20201030182441.png
7 |! C, E& P% Q; r' Z2 A

. L' R9 E' |9 O3 T% q" V
服务器端配置
5 I4 q: q+ O2 J0 @4 [1 |8 I  C
7 D1 v5 \0 v" a+ v
参考之前的文章,在之前文章的基础上再加一个"vhost_http_port"参数,用于接收 HTTP 请求。服务器端的防火墙或者宝塔面板之类的,放行frp用到的端口。需要额外注意,这里的演示的服务器端我用nginx监听了80端口,把来自域名的访问转发到frps使用的8080端口。当然你也可以直接让frps使用80端口。
1 {0 Z( z! X2 u# T3 }- f
[common]
! V* }7 x9 B, {. O+ E( mbind_addr=0.0.0.03 ^! C0 d5 i$ D$ ~( y9 T1 w
bind_port = 7000) a% M6 X" u7 }
vhost_http_port = 8080
/ z0 U! O) u; f8 S5 i/ z3 a) R  T" j3 B
token=12310086
" J# D: Z# d: k; X) b( R& A: g% J" Kdashboard_port = 7500
* [1 r7 z& `5 Cdashboard_user = admin2 w$ D# p6 r' ?6 g' I! _  w. H! }6 T
dashboard_pwd = admin123; l- t2 Z5 H4 z, w; I
<以上代码可复制粘贴,可往左滑>用 frps执行修改的文件./frps -c frps.ini* E' G0 {) p1 J# s1 r
<以上代码可复制粘贴,可往左滑>
  R$ X/ }5 \& X' L! `2 ]
微信图片_20201030182445.png
+ m8 s$ l. V- U7 a4 z7 {

. i- i. r) g) a* ]+ r' J% I
内网提供Web服务的机器设置

+ _: F6 U8 q+ Q+ l7 A* ]' \# A
内网提供Web端机器设置如下[common]
* M7 j+ S5 s! v* h+ x% Q4 E+ Gserver_addr = 服务器IP
" s0 Y) s" t5 `+ r; J+ jserver_port = 7000( j) [; [# l/ J& e
token=12310086
, U$ R! B  |2 L. x4 k5 D- o1 v7 B4 ~  P
[http]#连接名称随意设置,见名知意即可9 r" u# h7 g# s' D4 c# R+ R
type = http3 f- Z/ L% k5 E4 w( H( w1 |" N
local_ip = 127.0.0.1
& {1 A# i* ?. l: t5 }* S8 i: V+ hlocal_port = 80" K1 _" [! A4 F* d
use_encryption = false0 n. M- C7 C  T/ E% v% B
use_compression = true
9 {% Y5 E, J+ kcustom_domains = frp.xxxx.cn #你的域名
% k; @* L7 U' Z( c
<以上代码可复制粘贴,可往左滑>2 w  d3 B4 f1 T: m& D

5 A: `. u  ]7 g$ h: B说明; m- F7 l# ?& t" }

* Z9 c( w2 ~1 ?, ?

7 s6 `# k8 B# ~% W8 x% h"use_encryption"是否启用加密,我这里选择不启用,可以根据情况启用。. N6 U: K% [5 D* q0 {% g: Q# h3 f
"use_compression"是否压缩数据,压缩了传输速度会快那么一些,自行测试快多少。5 [7 u! r3 L, d- e1 k2 t, U2 m3 N/ j' M
"custom_domains"是绑定的访问域名,必须设置,不设置无法启动frpc。
./frpc -c frpc.ini: k4 J5 v8 S+ g& ]
<以上代码可复制粘贴,可往左滑>
- J7 h9 I6 }9 x, c5 M
微信图片_20201030182448.png
; g: s" o- V4 ?- y! P6 @
当frpc连上frps时候,在frps端会有反馈,面板里也能看到有一个新连接。
, @% Y9 \" Z0 A, Q6 W/ A
微信图片_20201030182452.png
- B; z7 B$ r7 D8 N/ }2 O  U 微信图片_20201030182457.png
然后把绑定的域名解析到服务器端的ip上,就可以用域名访问到内网的机器了。访问时候frps会有连接提示。
: j  x. g( n# j" t  Z! l
微信图片_20201030182501.png $ l" Y; ]3 D/ u; a5 _( U
微信图片_20201030182504.png
: U8 W  f: a( p6 h5 V) V" l2 S2 \
如果frpc没有启动会报下面错误。

/ w: K: Y' k- `. T8 @
微信图片_20201030182508.png
" k! g* V0 L, L+ o+ ^; @8 H

- v% H% K$ p. d% a9 M8 v
访问控制

! r" m' i/ u0 X' v
如果希望加上一层访问控制,在frpc.ini对应的http服务配置中加上"http_user"和“http_pwd”参数:http_user = admin7 \1 g6 W0 v, k6 e) f
http_pwd = admin( ?+ `+ \% L( x( \) t
<以上代码可复制粘贴,可往左滑>[common]
( P; {8 ^+ A  w; qserver_addr = 服务器IP
; [$ }9 m: J; N6 B) N6 Zserver_port = 7000
; \3 s0 m8 ]* Ztoken=12310086( T1 G' J0 [0 X- [4 o2 i" x  Q
6 i5 _1 J0 P  S3 h- o( @8 N. ~4 f: v
[http]#连接名称随意设置,见名知意即可
- N" L2 S- \& D: ?# vtype = http. m6 G  F: L& r, V1 m. r$ `6 v9 v
local_ip = 127.0.0.17 ~" g/ G5 |6 L/ i0 [, v- t
local_port = 80
: J" W2 `" b( H) }1 E! Yuse_encryption = false' J+ v, x8 ^. U' S2 K
use_compression = true5 i: `% i' _3 }7 g- A; V( d: K% K4 w
http_user = admin
) s! Y' c6 c0 L2 G* fhttp_pwd = admin
4 e( g: h; ?  \* ~custom_domains = frp.xxxx.cn #你的域名
* Q0 K7 y9 T% c/ @7 l
<以上代码可复制粘贴,可往左滑>
0 H4 o$ w$ w, ?9 u
微信图片_20201030182511.png
) ~& h( s; f8 s8 B

/ I( v' u2 X6 u5 O0 F
执行流程
' [6 P9 W& t- _" P

% W* K8 N. N' ?5 @
  • 内网端的80端口运行着网站。
  • 内网端的frpc读取配置,把内网机器的80端口转发到服务器端的8080端口。
  • 在服务器端用nginx监听了80端口,把来自域名的访问请求转发到frps监听的8080端口。
  • 服务器端的8080端口又把请求转发到内网的80端口上。
  • 就这样反复横跳,实现了通过外网访问内网的web服务。
      m. O: a8 t9 l

6 e; D9 y2 `) ~" R+ V- }

4 y8 X( S" Q3 p6 _
注意事项

1 n( q( X; l$ z

" C" K5 p  L7 L4 L* p
  • 尽管服务器端的frps在监听转发8080端口,直接访问公网IP:8080无效。
  • 如果同一个内网服务需要绑定多个域名,"custom_domains" 用英文","加其他域名。
  • https证书在服务器端的nginx上配置,也可以使用frp插件在内网端配置
    * {6 B, z  H+ Z+ ]1 S5 i! }, `! |
0 R7 e) Q1 B3 f$ \$ S# ^) s8 l; N, c

# I$ X/ `  N) ]6 t# n# `, r
其  他

2 z8 h4 p* h, G8 B! k2 R5 r
+ S8 v9 u! O) J: F. E- W
如果frp反代网站全程只需要一个域名,不同的服务对应不同的二级域名,frps加一个"subdomain_host"参数,参数值填没有前缀的域名,frpc加一个"subdomain"参数,参数值只填域名前缀。,比如我们要访问frp.example.com和tomcat.example.com,两个域名都解析到公网服务器上

, g& V0 Q% y+ I/ H. G, \
frps.ini8 a+ Z8 C( E) i

5 `9 s: R5 l/ ]
7 F) a8 U& n5 `" U
[common]
, T9 ?" n" ]7 R7 J7 rbind_addr=0.0.0.03 [& I9 f) ~, f; X8 u
bind_port = 7000
% Y* E' l9 g. a; F4 Mvhost_http_port = 8080
2 I  u' s4 }8 @- {token=12310086
% `5 g1 H1 C( tdashboard_port = 7500
$ |: n. n+ S+ u; gdashboard_user = admin3 l# p: X" @. p, y, V
dashboard_pwd = admin123
" D  ?6 t3 a. t) usubdomain_host= example.com* A- H4 S8 o# n) J
<以上代码可复制粘贴,可往左滑>
2 N- c7 `- \9 S3 ]1 Z( i% W$ i7 @) g& Z8 y5 j) _; P+ ?

! U) V" v7 V2 b5 x1 wfrpc.ini
+ j6 T1 T6 u1 [
9 Y, M0 l$ {6 [

4 W2 c3 N" ]2 X3 y0 y" n[common]
+ |9 |. z8 p$ B/ y* zserver_addr = 103.255.61.100
8 b: P* ^7 J% Hserver_port = 7000
) @; Y+ ~7 F+ c" L- P/ w9 S# q8 `token=12310086
% i/ {+ ?  W9 j: a! g. j6 [$ x% R% A7 F6 J
[http]% S8 `& u/ Z, I  S" O# |$ B
type = http& l3 D* }( k) W, Y: A) [8 \% b
local_ip = 127.0.0.1. B3 D- v; u9 H
local_port = 801 L) @1 r" Y; v& |
use_encryption = false
7 b6 i- a$ V# ]0 z$ L, r# f7 Guse_compression = true
* f! f& B4 z5 A9 X( |  rsubdomain = frp& `: G) l! N6 P, s+ b# F4 r6 k4 k) \$ c

/ B7 k) Y" S0 i- p. c0 Q2 _9 p- {[tomecat]
& Y- `$ c' V! Z' L9 z4 Otype = http
. j, X# s/ X* Y, }: `3 v2 ^local_ip = 127.0.0.19 b+ {: U7 l* W
local_port = 8080/ L3 A: \. O4 C3 Q* t
use_encryption = false
8 [: N3 q4 m9 {. P0 v. Y* U& Uuse_compression = true4 q. E) \9 j3 G6 a$ a; u: R# ^3 y
subdomain = tomcat

7 {' h6 O9 f" @. p' F4 X" n- |1 v" A" e# v6 a9 ?
赞 收藏 2 评论0 发布时间:2020-10-30 18:37

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版