利用FRP做HTTP服务的内网穿透(基础版)

在 linux 上执行 arch, 结果如果是 [X86_64] 即可选择 [linux amd64] 版本的 Release 包

wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz tar -zxvf frp_0.38.0_linux_amd64.tar.gz mv frp_0.38.0_linux_amd64 frp-0.38.0 

编辑 frps.ini, bind_port 是 frp 运行的端口, vhost_http_port 是在客户端访问时使用的端口, 这两个端口需在防火墙开放

新建 run.sh 来运行 server 端

#!/bin/sh nohup ./frps -c frps.ini & 
chmod 777 run.sh 

运行 run.sh, 查看 frp.log, 成功信息如下

2021/11/23 23:30:20 [I] [root.go:200] frps uses config file: frps.ini 2021/11/23 23:30:20 [I] [service.go:192] frps tcp listen on 0.0.0.0:7000 2021/11/23 23:30:20 [I] [service.go:235] http service listen on 0.0.0.0:8888 2021/11/23 23:30:20 [I] [root.go:209] frps started successfully 

假设在 Windows 上运行了一个本地 Web 服务, 端口是 10001

下载 Windows 版本的客户端

编辑 frpc.ini, server_addr 和 server_port 是服务端地址和端口, [local] 配置节是自己添加的内容, type 是 http, local_port 是本地服务的端口(按需修改), custom_domains 是已注册的域名或者自定义的子域名(需配置域名解析, 确保顶级域名能访问到服务器)

[common] server_addr = 117.50.xxx.xxx server_port = 7000 [local] type = http local_port = 10001 custom_domains = mrathena.cn 

因为 frpc.exe 不能直接点击运行, 参数没法传, 需要写一个启动的批处理 frpc.bat

@echo off set file=frpc.ini :: 读取并展示 frpc.ini 中的 local_port 和 custom_domains setlocal enabledelayedexpansion for /f "delims== tokens=1,2" %%i in (%file%) do ( if "%%i"=="local_port" (set port=%%j) if "%%i"=="custom_domains" (set domain=%%j) ) echo= echo 浏览器地址栏输入 [%domain%\**\**] 即可访问内网服务 echo= echo 代理的本地端口是 [%port%] :: 确认是否需要更换 local_port echo= set /p newPort=如需替换代理端口请输入新的端口(Enter): echo= if not defined newPort ( echo 未输入新的端口, 继续使用 [%port%] ) else ( echo 使用新的本地端口 [%newPort%] set changed=true ) :: 如果输入了新的 local_port 则替换 frpc.ini 中的 local_port if defined changed ( for /f "delims=:" %%a in ('type %file%^|findstr /n "local_port=%port%"')do set #%%a=y (for /f "tokens=1* delims=:" %%a in ('type %file%^|findstr /n .*')do ( if defined #%%a (echo local_port=%newPort%)else echo.%%b ))>"%file%".tmp @move "%file%".tmp "%file%" >nul 2>nul ) :: 启动 frpc echo= echo ================================================== echo= frpc -c %file% :: pause 

运行 frpc.bat, 成功信息如下

2021/11/23 23:41:57 [I] [service.go:301] [5eed5fb1046fe11c] login to server success, get run id [5eed5fb1046fe11c], server udp port [0] 2021/11/23 23:41:57 [I] [proxy_manager.go:144] [5eed5fb1046fe11c] proxy added: [local] 2021/11/23 23:41:57 [I] [control.go:180] [5eed5fb1046fe11c] [local] start proxy success 

现在调用 mrathena.cn:8888/xxx/xxx?xxx=xxx 应该就能正常提供服务了

 server { listen 80; server_name frp.mrathena.cn; location / { proxy_pass http://localhost:8888; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 

修改客户端配置 custom_domains = frp.mrathena.cn, 和 nginx 配置的子域名对应, 重启客户端

现在调用 frp.mrathena.cn/xxx/xxx?xxx=xxx 应该就能正常提供服务了

原文链接:https://blog.csdn.net/mrathena/article/details/121505377

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享