当前位置: 首页 > news >正文

免费网站模板素材/优化科技

免费网站模板素材,优化科技,网站营销与推广,wordpress侧边栏css1、介绍 ​ 当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上&a…

1、介绍

​ 当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上,用这台公网服务器做转发即可实现在家中也能外网访问。这样的就不需要我们在公网上部署一套一模一样的服务了,费时费力,而且还要同步数据。

2、准备工作

​ 想要实现内网穿透功能首先我们需要准备:

  • 一台公网服务器(用作nps的服务端)
  • 一台需要做转发的内网服务器(用作nps的客户端)

3、nps服务端安装及配置

3.1 下载nps服务端

​ 注意nps服务端是安装在公网服务器上的!!!

​ 服务端下载地址:https://github.com/ehang-io/nps/releases

在这里插入图片描述

​ 可以看到有很多版本,我的外网服务器是Linux的,可以输入命令查看服务器架构版本:

arch

在这里插入图片描述

​ x86_64 直接下载 linux_arm64_server.tar.gz 这个版本即可。可以手动下载到本地,然后通过scp命令传到服务器,也可以直接在外网服务器上下载。

​ 通过scp传送到外网服务器命令(如果开放了账号密码登录):

scp -P ssh开放的端口(如果为22,可以不用带此参数) 下载的linux_arm64_server.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置

​ 如:

scp -P 22 C:\Users\dxc\Downloads\linux_arm64_server.tar.gz root@xxx.xxx.xxx.xxx:/home/nps

​ 按下回车,再输入密码即可(注意大小写)。

​ 通过scp传送到外网服务器命令(只开放了通过证书登录的方式):

scp -i 你证书的位置 -P ssh开放的端口(如果为22,可以不用带此参数) -r 下载的linux_arm64_server.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置

​ 如:

scp -i C:\Documents\server-pro\ecmarkets-universal.pem -P 22 C:\Users\dxc\Downloads\linux_arm64_server.tar.gz root@81.xxx.xxx.xxx:/home/nps

​ 直接在外网服务器上下载命令:

wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_arm64_server.tar.gz

​ 下载完成后解压,输入命令:

tar -zxvf linux_arm64_server.tar.gz

​ 解压完成后,输入指令,查看文件:

ll

​ 我们能看到有如下这些文件:

​ 这样nps就下载解压成功了。

3.2 nps配置

​ 其中 conf 文件夹中的 nps.conf 就是我们服务端的配置文件,我们需要根据自己情况稍作修改。输入命令:

vim nps.conf

​ 默认配置如图:

在这里插入图片描述

​ 我们可以根据自己的场景稍作修改,找到 #web 下的内容,其中:

  • web_username:登录管理端的账号。
  • web_password:登录管理端的密码,默认为123,此处我改为123456。
  • web_port:管理端页面的端口,默认为8080,我服务器的8080端口已被项目占用,因此我此处改为7002。
#web
web_host=a.o.com
web_username=admin
web_password=123456
web_port = 7002
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key

​ 修改完成后,按 esc 退出编辑模式,在输入:

:wq

​ 保存并退出。

​ 其余配置说明如下:内容来源于官方文档:https://ehang-io.github.io/nps/#/?id=nps

名称含义
web_portweb管理端口
web_passwordweb界面管理密码
web_usernameweb界面管理账号
web_base_urlweb管理主路径,用于将web管理置于代理子路径后面
bridge_port服务端客户端通信端口
https_proxy_port域名代理https代理监听端口
http_proxy_port域名代理http代理监听端口
auth_keyweb api密钥
bridge_type客户端与服务端连接方式kcp或tcp
public_vkey客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式
ip_limit是否限制ip访问,true或false或忽略
flow_store_interval服务端流量数据持久化间隔,单位分钟,忽略表示不持久化
log_level日志输出级别
auth_crypt_key获取服务端authKey时的aes加密密钥,16位
p2p_ip服务端Ip,使用p2p模式必填
p2p_portp2p模式开启的udp端口
pprof_ipdebug pprof 服务端ip
pprof_portdebug pprof 端口
disconnect_timeout客户端连接超时,单位 5s,默认值 60,即 300s = 5mins

注意:如果你先进行了 install 操作,然后再去修改 conf 文件夹下的 nps.conf 文件,那么修改将不会生效。因为当我们 install 后默认的配置文件将会在 /etc/nps 下面的 nps.conf ,此时你需要去修改此处的配置,然后在切换到nps的安装目录输入 nps restart 重启即可生效!!!

3.3 nps服务端启动

​ 输入启动命令,启动nps服务端,如果你和我一样修改了管理端的端口,那么启动服务端将会占用80、8024、7002端口。如果你存在某些端口被占用,请到配置文件自行修改即可。

./nps install
nps start

​ 此时,我们打开浏览器输入:

xxx.xxx.xxx(你的外网服务器ip):你配置的web_port端口

​ 即可看到如下登录界面:

在这里插入图片描述

​ 输入配置的账号密码,默认为admin/123,点击登录,进入仪表盘:

在这里插入图片描述

​ 此时nps的服务端我们就配置完毕了,接下来开始配置客户端。

4、nps客户端配置

4.1 管理端添加客户端配置

​ 此处我们在管理界面点击左侧菜单栏的“客户端”,再点击“新增”按钮进行客户端的新增。

在这里插入图片描述

​ 进入到新增客户端页面:

在这里插入图片描述

​ 其中:

  • 备注:客户端的备注,可填可不填,根据自身情况。
  • Basic认证用户名:不需要填。
  • Basic认证密码:不需要填。
  • 唯一验证密钥:不需要填,让系统自动生成。
  • 允许客户端通过配置文件连接:填“是”即可。
  • 压缩:填“是”即可。
  • 加密:填“是”即可。

​ 填完之后,点击保存按钮,我们即可看到新增的客户端已经出现在列表中。

在这里插入图片描述

​ 此时,我们还需要配置隧道,点击左侧的“TCP隧道”进行新增。

在这里插入图片描述

  • 模式:我们选择TCP隧道。
  • 客户端ID:填写刚刚我们创建的客户端的ID,如果是第一次创建,那客户端ID为2。
  • 备注:不需要填。
  • 服务端端口:该端口表示你的客户端的应用最后被映射到服务器上的访问端口,比如你的客户端应用的端口为3781,服务端端口填写8999,那么 访问服务端的ip:8999 相当于访问 你客户端ip:3781 的资源。
  • 目标(IP:端口):客户端需要被代理的服务的端口。

​ 配置好后点击“新增”即可。如果想在这个客户端配置多个映射,只需要添加隧道即可。

在这里插入图片描述

4.2 nps客户端安装及连接

​ 下载地址:https://github.com/ehang-io/nps/releases

​ 此处我用的是本地电脑作为客户端,本地电脑为win10,64位操作系统,其他操作系统流程几乎一致。

​ 此处我下载 windows_amd64_client.tar.gz 这个版本。

在这里插入图片描述

​ 解压文件,进入 windows_amd64_client 目录:

在这里插入图片描述

​ 直接在当前路径下进入cmd:

在这里插入图片描述

​ 此时我们需要启动客户端,而启动的命令在我们管理端的客户端配置页面,找到我们创建的客户端,点击最前面的“+”号,复制下方的“客户端命令”。注意如果在windows下执行,不要复制前面的“./”!!!

在这里插入图片描述

​ 复制后在cmd窗口中执行,如图:

在这里插入图片描述

​ 看到输出“Successful connection with server xx.xx.xx.xx:8024”,代表连接成功了。我们也可以在管理界面中看到连接变为了“在线”。

在这里插入图片描述

5、测试

​ 到此处,nps的所有配置和启动事项都完成了,接下来我们可以通过访问我们的外网服务器ip + 我们配置的TCP隧道中的端口,就能直接转发到我们的本地服务上了。

​ 我本地启动了一个端口为 3781 的 Java 服务,接下来我访问外网服务器的ip + 我们配置TCP隧道中的端口,能看到穿透成功。如图:

在这里插入图片描述

相关文章:

使用nps实现内网穿透

1、介绍 ​ 当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上&a…...

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测&a…...

websocket和uni-app里使用websocket

一、HTTP是无状态协议 特点: 1、浏览器发送请求时,浏览器和服务器会建立一个连接。完成请求和响应。在http1.0之前,每次请求响应完毕后,会立即断开连接。在http1.1之后,当前网页的所有请求响应完毕后,才断…...

Opencv-C++笔记 (18) : 轮廓和凸包

文章目录 一、轮廓findContours发现轮廓drawContours绘制轮廓代码 二.几何及特性概括——凸包(Convex Hull)凸包概念凸包扫描算法介绍——Graham扫描算法 相关API介绍程序示例轮廓集合及特性性概括——轮廓周围绘制矩形框和圆形相关理论介绍轮廓周围绘制矩形 -API绘制步骤程序实…...

【半监督医学图像分割】2022-MedIA-UWI

【半监督医学图像分割】2022-MedIA-UWI 论文题目:Semi-supervise d me dical image segmentation via a triple d-uncertainty guided mean teacher model with contrastive learning 中文题目:基于对比学习的三维不确定性指导平均教师模型的半监督图像分…...

python发送邮件

为了安全起见,我们发送邮件需要使用tls,这样发送的内容都是加密的了,但是该工具批量发送带有自定义内容的邮件不方便,于是写了一个py脚本,使用--data参数,方便批量发送,我们的策略是每天随机发送…...

gitee上传本地项目bug

🤮这个破bug不知道浪费了多长时间,以前没有记录,每次都忘记,这次记下来 问题描述 gitee创建仓库,然后根据它提示的如下命令,但一直报错 原因分析: 把命令复制出来,粘贴到Sublime …...

自然语言处理2-NLP

目录 自然语言处理2-NLP 如何把词转换为向量 如何让向量具有语义信息 在CBOW中 在Skip-gram中 skip-gram比CBOW效果更好 CBOW和Skip-gram的算法实现 Skip-gram的理想实现 Skip-gram的实际实现 自然语言处理2-NLP 在自然语言处理任务中,词向量(…...

穿上App外衣,保持Web灵魂——PWA温故

早在2015年,设计师弗朗西斯贝里曼和Google Chrome的工程师亚历克斯罗素提出“PWA(渐进式网络应用程序)”概念,将网络之长与应用之长相结合,其核心目标就是提升 Web App 的性能,改善 Web App以媲美Native的流…...

【跟小嘉学 Rust 编程】二十六、Rust的序列化解决方案(Serde)

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

菜鸟教程《Python 3 教程》笔记(14):函数

菜鸟教程《Python 3 教程》笔记(14) 14 函数14.1 参数传递14.1.1 可更改(mutable)与不可更改(immutable)对象14.1.2 python 传不可变对象实例 14.2 参数14.2.1 必需参数14.2.2 关键字参数14.2.3 默认参数14.2.4 不定长参数 14.3 匿名函数14.4 强制位置参…...

SEC推迟ETF,BTC跌破26k,十年之约#6逢跌加仓

今日荐读:8.31教链内参《美证监会推迟所有的BTC现货ETF申请》。刘教链Pro《BTC的流速》。 * * * 刘教链 原创 * * * 原本是9.2的截止日,美SEC昨晚就忙不迭地放出了话,所有现货比特币ETF的申请,推迟,统统推迟。不管你什…...

c++20 多线程并发 latch barrier semaphore

背景: c20 关于多线程并发新增了 latch, barrier, semaphore ,接下来就按照一个一个进行介绍 latch latch 是一次性使用的线程协调点, 一旦给定数量的线程达到latch点时, 所有线程都会解除阻塞, 并继续执行. 基本上它是一个计数器, 在每个线程到达latch点时倒数, 一旦计数器达…...

【8 排序】简单选择排序。

顺序表&#xff1a; void Swap(int &a,int &b){int temp;tempa;ab;btemp; } void SelectSort(int A[],int n){int min,i,j;for(i0;i<n-1;i){mini;for(ji1;j<n;j)if(A[j]<A[min])minj;if(min!i)Swap(A[i],A[min]);} } 单链表&#xff1a; void SelectSort…...

中国太保首席数据库专家林春:先难后易,核心系统数据库升级复盘

P17 是中国太平洋保险&#xff08;以下简称太保&#xff09;关联关系最为复杂、商业数据库绑定程度最深、业务影响最多的核心系统之一。但就是这样一个对太保业务至关重要的系统却被选为数据库升级的“实验品”。当然&#xff0c;说是“实验品”只是因为这是太保第一次对关键的…...

数字孪生智慧工厂:电缆厂 3D 可视化管控系统

近年来&#xff0c;我国各类器材制造业已经开始向数字化生产转型&#xff0c;使得生产流程变得更加精准高效。通过应用智能设备、物联网和大数据分析等技术&#xff0c;企业可以更好地监控生产线上的运行和质量情况&#xff0c;及时发现和解决问题&#xff0c;从而提高生产效率…...

使用WebSocket实现聊天功能

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数据库设计二、实现代码1.SessionWrap2.websocket3.insertMessage4.清除未读 前言 使用WebSocket实现一对一的聊天功能与未读消息功能 一、数据库设计 会话…...

Ubuntu升级Cmake、gcc、g++

背景 最近要安装llvm&#xff0c;我选择的是从源码安装&#xff0c;所以要使用Cmake进行构建项目。但是服务器上的Cmake、gcc、g的版本都太低了&#xff0c;不符合要求&#xff0c;所以要对此进行升级。在本博客中采用的升级方法不一定是最好的方法&#xff08;因为我也是参考…...

8月28日上课内容 第四章 MySQL备份与恢复

本章结构 前言&#xff1a;日志⭐⭐ MySQL 的日志默认保存位置为 /usr/local/mysql/data ##配置文件 vim /etc/my.cnf [mysqld] ##错误日志&#xff0c;用来记录当MySQL启动、停止或运行时发生的错误信息&#xff0c;默认已开启 log-error/usr/local/mysql/data/mysql_error.l…...

es字段查询加keyword和不加keyword的区别

在ES&#xff08;Elasticsearch&#xff09;中&#xff0c;查询字段名后面加上"keyword"和不加"keyword"有着不同的含义和用途。 当字段名后面加上"keyword"时&#xff0c;表示该字段是一个keyword类型的字段。Keyword类型的字段会将文本作为一…...

前端JavaScript将数据转换成JSON字符串以及将JSON字符串转换成对象的两个API

在前端 JavaScript 中&#xff0c;你可以使用 JSON.stringify() 方法将 JavaScript 数据转换成 JSON 字符串&#xff0c;以及使用 JSON.parse() 方法将 JSON 字符串转换成 JavaScript 对象。下面是这两个 API 的详细说明和示例&#xff1a; JSON.stringify()&#xff1a; 用于…...

Spring——Spring Boot基础

文章目录 第一个helloword项目新建 Spring Boot 项目Spring Boot 项目结构分析SpringBootApplication 注解分析新建一个 Controller大功告成,运行项目 简而言之&#xff0c;从本质上来说&#xff0c;Spring Boot 就是 Spring&#xff0c;它做了那些没有它你自己也会去做的 Spri…...

Python基础之基础语法(二)

Python基础之基础语法(二) 语言类型 静态语言 如&#xff1a;C C Java ina a 100 a 100 a abc # 不可以静态语言需要指定声明标识符的类型&#xff0c;之后不可以改变类型赋值。静态语言变异的时候要检查类型&#xff0c;编写源代码&#xff0c;编译时检查错误。 动态语…...

docker常见面试问题详解

在面试的时候&#xff0c;面试官常常会问一些问题&#xff1a; docker是什么&#xff0c;能做什么&#xff1f;docker和虚拟机的区别是什么呢&#xff1f;docker是用什么做隔离的&#xff1f;docke的网络类型&#xff1f;docker数据之间是如何通信的&#xff1f;docker的数据保…...

Auto-GPT 学习笔记

Auto-GPT 学习笔记 Auto-GPT 简介 Auto-GPT 是一个基于 GPT-4 的自主智能体实验项目。它展示了大规模语言模型的规划、记忆和工具使用能力。Auto-GPT 的目标是实现一个完全自主的 AI 代理。GitHub 仓库 Auto-GPT 核心模块 规划(Planning) 使用强化学习策略进行多跳思考。通…...

代码随想录 - Day30 - 修剪二叉树,转换二叉树 + 二叉树总结

代码随想录 - Day30 - 修剪二叉树&#xff0c;转换二叉树 二叉树总结 669. 修剪二叉搜索树 有点像是删除二叉搜索树的变形&#xff0c;改变了删除条件而已。 递归法&#xff1a; class Solution:def trimBST(self, root: Optional[TreeNode], low: int, high: int) -> O…...

[音视频] sdl 渲染到外部创建的窗口上

API SDL_CreateWindowFrom # 在外部窗口上创建窗口 其他 api 调用&#xff0c;按照之前的 代码 ui.setupUi(this); sdl_width ui.label->width(); sdl_height ui.label->height(); SDL_Init(SDL_INIT_VIDEO); sdl_win SDL_CreateWindowFrom((void*)ui.label->wi…...

MongoDB之索引

大数据量使用全集合查询&#xff0c;这是非常影响性能的&#xff0c;而索引可以加快查询效率&#xff0c;提高性能&#xff0c;所以这方面的知识也是必不可少的。 查询分析 explain()可以帮助我们分析查询语句性能。 语法 db.collection.find(...).explain()案例及结果 案…...

Redis的介绍

Redis的架构介绍如下: 1. 概述 Redis是一个基于内存的高性能NoSQL键值数据库,支持网络访问和持久化特性。 2. 功能架构 Redis提供字符串、哈希、列表、集合、有序集合、位数组等多种数据结构,支持事务、Lua脚本、发布订阅、流水线等功能。 3. 技术架构 Redis使用单线程的…...

一文了解Docker的用法

一、什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是…...