依照目前针对内网穿透的三种方案:
其中第一种方案因为ipv4地址紧张,ipv6还未普及等原因,很难获取到自家的公网IP,且IP固定因为不便于更换服务器位置。
第二种方案和第三种方案其实本质差不多,都是需要一个有外网地址的服务器做中转,把对于网站的访问再通过服务器到客户端的形式转移给你的内网服务器来处理。鉴于使用体验和数据安全等原因还是自己搭建外网服务器中转比较好,故采用frp来进行内网穿透。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
2.1 frp分为服务端和客户端,在https://github.com/fatedier/frp/releases下载对应版本的frp压缩包,内含服务端文件和客户端文件。
下载命令:sudo wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz
2.2 新建文件夹frp在/usr/local/下,下载frp压缩包到frp文件夹里。然后解压frp压缩包并进入其文件夹:
sudo tar -zxvf frp_0.35.1_linux_amd64.tar.gz
2.3 配置服务端(公网的服务器),先删掉frpc和frpc.ini文件,然后vim打开frps.ini文件进行配置。
[common]
bind_port = 7000 # 用于frp客户端和服务端连接的端口,配置客户端时和这个一样
token = 123 # 用于frp客户端和服务端连接的口令,需自行设置并记录,客户端会用到
dashboard_port = 7500 # 服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为公网服务器的公网IP)查看frp服务运行信息。
dashboard_user = xxx # 打开仪表板页面登录的用户名和密码,需自行设置
dashboard_pwd = xxxxx
vhost_http_port = 6081 # 访问客户端web的http服务自定义的端口号
vhost_https_port = 10443
保存后启动:
./frps -c ./frps.ini
2.4 配置客户端(内网服务器),先删掉frps和frps.ini文件,然后vim打开frpc.ini文件进行配置。
[common]
server_addr = x.x.x.x # 公网服务器的IP
server_port = 7000 # 与服务器的bind_port相同
token = 123 # 与服务器的token相同
# 公网通过ssh访问内部服务器
[ssh]
type = tcp # 连接协议
local_ip = 192.168.1.101 # 内网服务器的IP,使用127.0.0.1也可以
local_port = 22 # ssh终端默认端口号
remote_port = 6000 # 自定义访问内部ssh的端口号,当进行外网访问内部服务器时用的端口
#公网访问内部web服务器以http方式
[web]
type = http # 访问协议
local_port = 80 # 内网web服务的端口
custom_domains = xxxxxx.com # 所绑定的公网服务器域名,一级、二级域名都可以,必须要有
保存后启动:
./frpc -c ./frpc.ini
4.1 在 /lib/systemd/system/ 路径下创建 frpc.service 文件,其完整路径为:/lib/systemd/system/frpc.service
4.2 编辑frpc.service文件,添加如下代码:
#frpc.service
[Unit]
Description=frpc Service
After=network.target syslog.target
Wants=network.target
[Service]
User=pi
Type=simple
ExecStart=/填写frpc的绝对路径/frpc -c /填写frpc的绝对路径/frpc.ini
[Install]
WantedBy=multi-user.target
4.3 重载并设置开机启动
sudo systemctl daemon-reload
sudo systemctl enable frpc
4.4 以上操作完成以后重启树莓派看看是不是已经成功启动了frpc,可以在命令行执行下面指令的最后一个查看frpc的状态。
//启动命令
sudo systemctl start frpc
//停止命令
sudo systemctl stop frpc
//重启命令
sudo systemctl restart frpc
//查看状态
sudo systemctl status frpc
我会将我的网站开放到服务器过期为止,到2021-2-18,晚上关闭,欢迎大家尝试使用!网站代码还有很多不完善的地方,敬请谅解!(目前暂停访问了!)
文章浏览阅读864次。Gihosoft TubeGet下载立体声视频读取视频信息 ffmpeg -i video.mp4resize视频 ffmpeg -i video.mp4 -s 3840:2160 video1.mp4视频eac贴图至e ffmpeg -i video1.mp4 -vf v360=eac:e video2.mp4精确裁剪视频(00:28~20s) ffmpeg -y -i video2.mp4 -ss 00:00:28 -t 00:00:20 -c:a copy -vcodec libx264 -._立体声小视频下载
文章浏览阅读3.3k次。数值类型(numeric types)integers(整型)什么是整数数学上,整数是指正整数、零、负整数。python中也是如此。整型可表示的范围sys.maxsizeAn integer giving the maximum value a variable of typePy_ssize_tcan take. It’s usually2**31 - 1on a 32-bit platform..._python中任意实数数字怎么表达
文章浏览阅读1.1k次。ES51、 严格模式(use strict)这种模式,使得JavaScript在更严格的语法条件下运行:(1)变量必须使用var声明;(2)禁止自定义的函数中的this指向window(3)创建 eval 作用域即为块级作用域(4)对象不能有重名的属性use strict可以在脚本或者函数开头声明,分别具有全局和函数作用域。2、 增加JSON对象JSON.stringify(obj/arr);JSON.parse(json);3、 扩展了数组Array_es5的面向对象有哪些特性、和es6的面向对象有哪些特性
文章浏览阅读2.5k次。Android studio启动android device monitor,第一次点击没有反应再点击是提示如上图“Android Device Monitor is already launched”解决办法: 点击上图中的按钮, 选择yes按钮 直接选择cancel然后再重新启动Android Device Monitor具体原因还不清楚,只知道这样操作可以临..._android device monitor is already launched
文章浏览阅读1.8k次,点赞2次,收藏8次。1. 外键约束约束 : 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、关联性foreign key 功能 : 建立表与表之间的某种约束的关系,由于这种关系的存在,能够让表与表之间的数据,更加的完整,关连性更强,为了具体说明创建如下部门表和人员表。示例# 创建部门表CREATE TABLE dept (id int PRIMARY KEY auto_increment,dname VARCHAR(50) not null);# 创建人员表CREATE TABLE_mysql 给表 添加外键约束指定约束名将表的外键和另一个表的键关联起来
文章浏览阅读337次。这个吧我的头都搞痛了,哎!!先看布局这种类型于朋友圈的这样,最多9张至少一张的,刚开始决定每个大小size用不同的LinearLayoutmanager来实现,一个用1,两个就用gradmanager来实现,这类文字很多,因为这里的地址是网络地址传的是string,在自定义manager的时候发现,测量的高度始终为0,这样的话就无法显示图片,最后在本地使用一张图片,发现可以显示,那说明方法没有用错,最后就不得不放弃,另找一种方法。这个原因就花了一个下午的时间,因为时间紧,所以就换个写法。.._friendscircleimagelayout
文章浏览阅读875次。基于springboot的Flume整合_springboot整合flume
文章浏览阅读1.1k次。1.调试 C 程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。对于这种错误,用编译器很容易解决。所以,改错题的第一步是先编译,解决这类语法错误。下面总结了二级C 语言上机改错题中常见的语法错误:(1) 丢失分号,或分号误写成逗号。(2) 关键字拼写错误,如本来小写变成大写。(3) 语句格式错误,例如for 语句中多写或者少写分号。(4) 表达式声明错误,例如:少了()(5..._关键字拼写错误,如把while写成whlie
文章浏览阅读433次。Precision T3610ManufacturerModelIntelIntel C602 ChipsetManufacturerModelsIntelSupports Single ProcessorIntel Xeon E5-1603 Processor (Quad Core, 2.8GHz Turbo, 10MB)Intel Xeon E5-1607 v2 Processor (..._precision t3610
文章浏览阅读1.8w次。Example example = new Example(Notice.class); Example.Criteria criteria = example.createCriteria(); //当前时间 String currentDate = LocalDate.now().toString(); //时间检查 criteria.andGreaterThanOrEqualTo("noticeSt..._andgreaterthan
文章浏览阅读550次。Python2.7 getattr()、setattr()以及hasattr()文章目录Python2.7 getattr()、setattr()以及hasattr()getattr()setattr()hasattr()总结getattr()>>> class A(object):... t=1... def test(self,a,b):... ..._python2.7 getattr
文章浏览阅读2k次。在Linux下,如果需要编写界面应用,并且此界面应用对性能的要求不是很高,一般可以使用Python解决。Python中可以使用自带的Tkinter库或者是第三方的Wxpython库,当然Tkinter的移植性更好。 安装Tkinter非常简单,只需要输入下面命令即可:sudo apt-get install python-tk 即可安装成功Tkinter。 下_unbuntu pmw