远程访问本地搭建的NextCloud(反向代理网页)
前言
在没有公网IP的情况下,很难从其他网络环境中直接访问到部署在本地的web服务,这时候就需要通过内网穿透的方式来实现。而对于内网穿透,有着很多的实现方式,最为常见的就是通过云服务器搭建和使用别人提供的服务
自建内网穿透服务
需要有自己的云服务器
服务端和客户端都需要下载frp,下载地址 => Releases · fatedier/frp (github.com)
服务端配置
编辑frps.ini文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,需要与客户端一致,请改为更复杂的
token = aaaaaa
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = Mango
dashboard_pwd = 12345678
enable_prometheus = true
# http 端口可更改
vhost_http_port = 8090
# https 端口可更改
vhost_https_port= 8081
#vhost_https_port = 8080
# frp日志配置 路径根据自己需求更改
log_file = /root/frp/.frps.log
log_level = error
log_max_days = 3配置systemd守护进程便于管理
1
vim /etc/systemd/system/frps.service
输入以下内容并保存
1
2
3
4
5
6
7
8
9
10
11
12[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/root/frp/frps -c /root/frp/frps.ini
[Install]
WantedBy=multi-user.target启动frps并设置开机自启
1
2
3systemctl daemon-reload
systemctl start frps
systemctl enable frps配置nginx
如果没有nginx先安装
1
2apt update
apt install nginx编辑配置文件
1
2
3
4
5vim /etc/nginx/sites-enabled/nextcloud
也可以不新建nextcloud文件,直接配置默认文件
vim /etc/nginx/sites-enabled/defaultnginx代理frps配置文件参考
可配置SSL开启https
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28server{
listen 80;
listen 443 ssl;
#对应你的域名
server_name xxx.xxx.cn;
# https 域名证书相关配置
# ssl证书存储路径,根据个人存储路径设置,我的被存在了 /etc/nginx/ssl/ 文件夹下面
ssl_certificate /etc/nginx/ssl/xxx.mstzf.cn.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.mstzf.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8090; # 映射的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;
client_max_body_size 0;
}
}
}重启nginx服务
1
systemctl restart nginx
客户端配置
编辑frpc.ini文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57[common]
# 远程服务器地址
# 替换为自己的域名
server_addr = 0.0.0.0
# 远程服务器监听端口
# 和服务端 bind_port 相同
server_port = 7000
# 连接密钥
# 必须和服务端配置相同
token = aaaaaa
# 配置日志文件
# 日志级别:trace, debug, info, warn, error
# 日志保存路径根据需求修改
log_file = /home/zh/frp/log/.log
log_level = error
log_max_days = 3
# 客户端管理配置
admin_addr = 127.0.0.1
admin_port = 7500
admin_user = Mango
admin_pwd = 12345678
# 代理端口配置 模板
# [内容随意 如ssh]
# type = 连接类型 如 tcp
# local_ip = 127.0.0.1
# local_port = 22 本地需要代理的端口
# remote_port = 2222 将本地22端口代理为远程的2222端口
# 该配置下,可用远程 ip 的 2222 端口访问到本地的 22 端口服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222
[rdp]
type=tcp
local_ip = 127.0.0.1
local_port=3389
remote_port=3389
[nx]
type=tcp
local_ip=127.0.0.1
local_port=4000
remote_port=4000
[web]
type = http
local_ip = 127.0.0.1
local_port = 80
#subdomain = root
# 绑定的域名 和nginx配置下的 server_name 相同
custom_domains = xxx.mstzf.cn为frpc配置systemd守护进程便于管理
编辑文件
1
vim /etc/systemd/system/frpc.service
输入以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
# 根据frp所在位置设置
ExecStart=/home/zh/frp/frpc -c /home/zh/frp/frpc.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target启动frpc并配置开机自启
1
2
3
4
5systemctl daemon-reload
systemctl start frpc
systemctl enable frpc
使用第三方服务
我个人使用的是Sakura Frp
,有能够满足基本需求的免费套餐,vip套餐也很划算,已经能够满足我的基本需求
注册账号
完善个人信息
如果有建站需求想要使用国内站点,需要完成实名认证和有备案域名,否则只能使用国外的站点来搭建
在客户端安装frp软件
这一部分官网中已经介绍得十分的详细,这里只有几个关键命令,具体可到官网查看
引用站外地址,不保证站点的可用性和安全性frpc 基本使用指南SakuraFrp 帮助文档确认系统架构
1
uname -m
获取软件链接
引用站外地址,不保证站点的可用性和安全性软件下载SakuraFrp安装
1
2
3
4
5cd /usr/local/bin
wget -O frpc <下载地址>
chmod 755 frpc配置守护进程(systemd)
具体操作可去指导文档查看
引用站外地址,不保证站点的可用性和安全性Systemd配置frpc服务SakuraFrp帮助文档添加工作目录
1
mkdir -p /usr/local/etc/natfrp
编辑配置文件
1
vim /etc/systemd/system/frpc@.service
输入配置内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14[Unit]
Description=SakuraFrp Service
After=network.target
[Service]
Type=idle
#DynamicUser=yes
Restart=on-failure
RestartSec=60s
ExecStart=/usr/local/bin/frpc -f %i
WorkingDirectory=/usr/local/etc/natfrp
[Install]
WantedBy=multi-user.target重载systemd
1
systemctl daemon-reload
新建隧道
对于远程访问网页的,需要选择可建站的节点;至于选择国内还是国外要先看自己的域名是否已经备过案,备案过的域名可以使用国内节点,国内节点在各方面都要优于国外。如果没有备案域名,就只能使用国外节点。
端口根据本地网页端口配置
在绑定域名和自动HTTPS中一定要输入自己需要使用的域名
配置DSN解析
复制节点域名,到域名服务商处配置DNS解析,将自己的域名CNAME到复制的节点域名上
- 记录类型选择CNAME
- 记录值选择选择节点所绑定域名
配置SSL证书
引用站外地址,不保证站点的可用性和安全性配置frpc使用的SSL证书SakuraFrp帮助文档从服务商下载域名SSL证书选择Nginx,将证书重命名为 将其中 扩展名为pem的直接将扩展名修改为crt 并只保留域名和扩展名 即 如 nextcloud.mstzf.cn.key 的形式
将证书移动到之前配置的工作目录中 /usr/local/etc/natfrp
启动隧道
1
2systemctl <start|stop> <Unit名称>
<Unit名称> 即下图 -f 之后 红色框部分