frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
一、环境准备
下载
wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
解压
tar -xzvf ./frp_0.61.2_linux_amd64.tar.gz
自启配置
创建 frps.service 文件
使用文本编辑器 (如 vim) 在
/etc/systemd/system
目录下创建一个frps.service
文件,用于配置 frps 服务。$ sudo vim /etc/systemd/system/frps.service
写入内容
[Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target
使用 systemd 命令管理 frps 服务
# 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps
设置 frps 开机自启动
sudo systemctl enable frps
二、公网服务器配置
安装并配置FRP服务端
下载对应版本的FRP(GitHub Release),配置frps.ini
:
[common]
bind_port = 7000 # 客户端与服务端通信的端口
vhost_http_port = 80 # HTTP虚拟主机端口(供Nginx反向代理)
token = your_token # 客户端与服务端通信的凭证
启动frps
:
nohup ./frps -c frps.ini &> frps.log &
配置Nginx反向代理与SSL
编辑Nginx配置文件(如/etc/nginx/sites-available/public-domain.com
),监听443端口并配置SSL证书:
server {
listen 443 ssl;
server_name public-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:80; # 转发到frps的HTTP端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name public-domain.com;
return 301 https://$host$request_uri; # 强制HTTP跳转HTTPS
}
重启Nginx:
systemctl restart nginx
三、内网客户端(Windows)配置
安装并配置FRP客户端
下载FRP客户端,配置frpc.ini
:
[common]
server_addr = 公网服务器IP
server_port = 7000
token = your_token
[web_proxy]
type = http
local_ip = 127.0.0.1
local_port = 8000 # 本地反向代理监听的端口
custom_domains = public-domain.com
启动frpc
:
.\frpc.exe -c frpc.ini
配置本地反向代理(Nginx)
在Windows上安装Nginx,配置监听8000
端口并转发请求至目标网站:
server {
listen 8000;
location / {
proxy_pass https://inner_site.com; # 目标校园网HTTPS地址
proxy_set_header Host inner_site.com;
proxy_ssl_server_name on; # 传递SNI信息
proxy_ssl_verify off; # 若目标证书为自签名,需关闭验证
}
}
启动Nginx:
start nginx