基于frp实现内网穿透
环境
- 公网服务器CentOS
- 内网服务器Windows
- 可以管理的域名
步骤描述
- 在外网服务器上配置并启动 Frp 服务端。
- 在内网服务器上配置并启动 Frp 客户端。
配置frp服务端
-
下载:frp Github地址 Linux版本
-
解压:
# 解压地址、文件名称自定义 tar -zxvf frp_0.xx.x_linux_amd64.tar.gz cd frp_0.xx.x_linux_amd64
-
修改frps.ini
[common] bind_port = 7000 # 配置 HTTP 服务,使用 7001 端口处理 HTTP 流量 # 因为选择Nginx 中配置 HTTPS。所以这里只配置vhost_http_port vhost_http_port = 7001
-
启动
# 后台运行并输出日志 nohup ./frps -c frps.ini > frps.log 2>&1 & # 查看日志 tail -f frps.log
-
停止
# 查看进程ID ps aux | grep frps # 关闭进程 kill pid
-
Nginx
server { listen 80; listen 443 ssl http2; server_name yourdomain.com; ssl_certificate /path/to/your/fullchain.pem; ssl_certificate_key /path/to/your/privkey.pem; # 启用了HSTS,浏览器会自动将 HTTP 请求升级为 HTTPS add_header Strict-Transport-Security "max-age=31536000"; location / { proxy_pass http://127.0.0.1:7001; 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 X-Forwarded-Scheme $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Proto $scheme; # 支持 WebSocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
配置frp客户端
-
下载 frp Github地址 Windows版本
-
解压文件
-
创建并编辑frpc.ini配置文件
[common] server_addr = YOUR_SERVER_IP # 替换为你的外网服务器公网 IP 地址 server_port = 7000 # 这里是与 Frp 服务端的 bind_port 相同的端口 [web] type = http local_port = 8000 # 替换为你希望暴露的本地服务端口 custom_domains = yourdomain.com # 替换为你的域名
-
启动
创建bat可执行文件并写入以下内容:@echo off REM 设置 Frp 客户端可执行文件和配置文件的路径 set FRP_CLIENT_PATH=C:\path\frp\frpc.exe set FRP_CONFIG_PATH=C:\path\frp\frpc.ini REM 启动 Frp 客户端 %FRP_CLIENT_PATH% -c %FRP_CONFIG_PATH% REM 等待用户输入以关闭窗口 pause