通过frp实现内网穿透以及反向代理的设置
frps:frp服务端
frpc:frp客户端
frp项目地址:https://github.com/fatedier/frp
1. frps的安装
1.1 Windows下配置frps
1.1.1 安装
安装包链接:https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_windows_amd64.zip
下载后解压
修改frps.ini文件
[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 8088
token = admin
max_pool_count = 50
服务端配置详见https://gofrp.org/docs/reference/server-configures/
1.1.2 运行
在Windows上运行frps
frps -c frps.ini
1.2 Debian Linux下配置frps
1.2.1 安装
安装包链接:
https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_linux_amd64.tar.gz
下载,解压
wget https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_linux_amd64.tar.gz
tar zxvf frp_0.43.0_linux_amd64.tar.gz
修改frps.ini,配置同Windows一样
1.2.2 使用systemd配置frps后台运行以及开机自启
在 Linux 系统下,使用systemd
可以方便地控制 frp 服务端 frps
的启动和停止、配置后台运行和开启自启。
要使用 systemd
来控制 frps
,需要先安装 systemd
,然后在 /etc/systemd/system
目录下创建一个 frps.service 文件。
如Linux服务端上没有安装 systemd
,可以使用 yum
或 apt
等命令安装 systemd
。
# yum
yum install systemd
# apt
apt install systemd
2) 使用文本编辑器,如 vim
创建并编辑 frps.service
文件。
$ 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.ini
[Install]
WantedBy = multi-user.target
(3) 使用 systemd
命令,管理 frps。
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
(4) 配置 frps 开机自启。
systemctl enable frps
1.3 padavan路由器上设置frpc
server_addr填写frps服务端的公网IP地址
token应填写与frps.ini配置文件中的token一致
custom_domains填写访问图中web1资源的目标域名
举例:
custom_domain填写test.com,则用户在浏览器中公网访问http://test.com:8088,实际访问的内网资源为http://192.168.203.1:80
2. nginx设置反向代理
2.1 设置frps dashboard反向代理(http转https)
参考配置文件:
#frps_dashboard反向代理
server {
listen 7501 ssl http2; #监听端口
ssl_certificate /www/server/panel/vhost/cert/test.com/fullchain.pem;
#证书路径
ssl_certificate_key /www/server/panel/vhost/cert/test.com/privkey.pem;
#证书私钥路径
location ^~ / {
proxy_pass http://127.0.0.1:7500; #仪表盘访问地址
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
}
}
说明:
反向代理前,访问http://test.com:7500跳转到frps面板;
反向代理后,访问https://test.com:7501跳转到frps面板。
2.2 设置内网穿透资源的反向代理
#https2http
server
{
listen 8443 ssl; # https对应端口,
ssl_certificate /root/.acme.sh/test.com/fullchain.cer; # 证书绝对路径
ssl_certificate_key /root/.acme.sh/test.com/test.com.key; # 密钥绝对路径
server_name *.test.com; #服务器名称设置为泛域名,因为不同域名对应不同的内网资源。
location / {
proxy_pass http://127.0.0.1:8088; # 映射的frp服务端frps.ini的vhost_http_port端口
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;
}
}
说明:
反向代理前,访问http://web1.test.com:8088跳转内网资源http://192.168.100.1:80,访问http://web2.test.com:8088跳转内网资源http://192.168.100.2:80;
反向代理后,访问https://web1.test.com:8443跳转内网资源http://192.168.100.1:80,访问https://web2.test.com:8443跳转内网资源http://192.168.100.2:80。
版权声明:
作者:admin
链接:https://luhaoyu.com/index.php/2022/07/05/%e9%80%9a%e8%bf%87frp%e5%ae%9e%e7%8e%b0%e5%86%85%e7%bd%91%e7%a9%bf%e9%80%8f%e4%bb%a5%e5%8f%8a%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86%e7%9a%84%e8%ae%be%e7%bd%ae/
来源:悄悄拔尖
文章版权归作者所有,未经允许请勿转载。