通过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/
来源:悄悄拔尖
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录