标签:内网穿透

PM2 的安装、配置和使用

安装和常用命令

安装 nodejs 和 npm

# 对于 ubuntu22.04,直接:
sudo apt install -y nodejs npm

安装 PM2

npm install -g pm2

启动程序

pm2 start <app_name|id|all>

通过 DDNS+显性URL 把内网部署的.NET CORE WEBAPI 项目暴露到公网中

通过本文,你可以把部署在公司/家里服务器/虚拟机上的网站、webapi等站点、服务暴露到公网中,通过显性URL来达到隐藏端口号,直接80/443端口访问。

环境说明

  • .NET CORE WebAPI:本文初衷是因为作者日常 obsidian 中的模板需要一个天气 api,原本是用了 witt 站点提供的服务,但经常抽风,无奈之下准备自己搭建一个,至少可控。
    • 提供天气的服务基于 .NET CORE WEBAPI(.NET 6)
    • 高德天气服务(考虑到会有端口被扫描的风险,个人编写的查询 api 不再对外开放使用。)
  • R86S:
    • PVE7 容器(OS 为 ubuntu 22.04)
    • DDNS 服务(宿主为 istoreOS)
  • 本文域名和解析在腾讯云上(阿里云,花生壳类同)

发布、打包程序

因为内网使用,所以直接 http 即可,为了防止 webapi 自动跳转到 https,建议程序中注释以下部分:

app.UseHttpsRedirection();

打包项目:
直接在 VS 上打包:

如果你要用 PM2 来进行进程守护,那么可以生成的时候,建议用独立部署模式,这样子才能生成不包含 .dll 后缀的文件,以便 PM2 来执行

在 CentOS 搭建 ngrok server,进行内网穿透

在日常开发环境中,可能会碰到需要内网穿透的一些需求,如微信小程序的开发,为了便于开发调试,需要将内网机器对外暴露,较便捷的方式有(难易度由上往下依次繁琐):

  • 使用 ngrok 等类似客户端,通过别人架设的服务器进行内网穿透,较为灵活,可自建服务器。
  • 注册一个花生壳,使用其推出的内网穿透服务,有的时候会抽风,且 ssl 域名存在不够用的情况需增购。
  • 在外网架一个 nginx,通过在路由器设置 NAT 后,转发到内网机器上,灵活度较高,但需拥有路口路由器配置权限。

本文主要讲解如何使用 ngrok 自建一个内网穿透服务器,通过本文,你可以掌握:

  1. 在 centos 等其他 linux 衍生版本上搭建一个 ngrok server。
  2. 通过 openssl 生成证书。
  3. 在 windows,linux,arm 系统上使用生成 ngrok 客户端进行内网穿透。

1. 准备工作

通过 nginx 实现内网穿透

小程序开发的时候, https 是绕不过的一道环节,除了微信提供的 ssl 服务器架设方案,还有花生壳内网穿透服务、自行在内网架设 DNS 服务器等进行解决。本文所要讲解的,是通过外网 nginx 服务器反向代理来实现内网穿透。

前置条件:

1.路由器需支持端口转发。

2.需有公网 IP ,固定不固定无所谓。

3.在公有云上架设 nginx (本文使用阿里云 ECS 通过 linux 搭建 nginx),通过反向代理实现内网穿透。

在路由器上设置端口转发