接上篇:0元购服务器的方案,讲一点奇巧淫记。
|
在上一节中,我们获取了微软 Azure 的 1 核 1 G 公网服务器,然而配置太低,根本无法支撑大型网站的部署与运维。而配置更高的云服务器价格昂贵,且如果是国内服务器的话,域名绑定也需要备案等。如果我们自建服务器虽然成本较低,比较方便,但却不会有公网 IP,无法公开访问。 为了节约成本与方便备案,我们可以使用我们申请的 Azure 公网服务器用于公网 IP 与域名绑定,用内网服务器/国内云服务器进行业务的部署搭建,使用内网穿透进行连接。 本文将学到: • 如何部署网站 • 如何进行内网穿透 • 如何进行域名绑定与反向代理 本文将假定你已经完成了上一讲的免费的公网服务器与公网 IP,并有一个域名(建议使用境外域名搭配我们的 Azure,这样不用备案) |
网站的搭建与部署
|
网站的搭建并不是我们的重点,因此这里省略了编码过程,重点讲解内网穿透与域名绑定。 假设我们已经在本地开发好了一个可运行的前后端不分离项目,使用 Python Flask 框架,目标是运行在本服务器的 5000 端口上,且持久化运行。 |
将网站代码上传到服务器虚拟机上

Docker 配置相关环境
前文在安装 1Panel 的时候,我们已经安装了 Docker。因此接下来我们将用 Docker 来部署到服务器上。
关于软件源与 Docker 源,这里推荐一键脚本使换源更简单 – LinuxMirrors一键解决。
[该类型的内容暂不支持下载]
如果仍然想要手动配置镜像的话,可以参考我的镜像,但是有过期风险,仍然建议使用上面的方式:
|
我使用的 Docker 镜像是:
如果下文创建镜像失败,可以将etc/docker/daemon.json修改成上面的内容。 |
使用终端进入到当前路径下,可以直接点击面板此处终端即可将路径切换到对应位置:

在终端中输入如下指令构建镜像:
|
Bash docker build -t myapp . |
•myapp是我们自定义的镜像名字。
•.表示当前目录中有 Dockerfile。
可以使用如下指令来查看现有镜像:
|
Bash docker images |

构建成功后,运行容器:
|
Bash docker run -d \\ –name myapp \\ -p 5000:5000 \\ –restart=always \\ myapp |
•-d:后台运行(detached 模式)
•–name myapp:容器命名
•-p 5000:5000:将宿主机的 5000 端口映射到容器内的 5000 端口(对应EXPOSE 5000)
•–restart=always:容器退出或服务器重启时自动拉起
•myapp:镜像名称

可以使用如下指令来查看运行状态:
|
Bash docker ps |
面板中同样也可以看到状态和日志:

既然成功启动,那么我们就访问下我们虚拟机 IP 下的 5000 端口试一试:

如上,是可以成功访问的。
内网穿透
|
当前我们的网站确实在服务器虚拟机的 5000 端口运行起来了,并且可以在局域网下访问。 然而,我们的虚拟机处在内网环境下,没有公网 IP,只能局限在这个小小的房间内。这时,就需要利用到我们前面提到的03免费的公网服务器与公网 IP,借助这个公网 IP 来实现内网穿透。 |
|
Frpc 与 frps 必须使用 Docker 镜像配置,防止黑客利用 0day 漏洞进行攻击! Frpc 与 frps 必须使用 Docker 镜像配置,防止黑客利用 0day 漏洞进行攻击! Frpc 与 frps 必须使用 Docker 镜像配置,防止黑客利用 0day 漏洞进行攻击! |
完成内网穿透所需要使用的工具是 frp。
|
我们需要: • 在内网服务器也就是我们的虚拟机上安装 frpc(c 代表 client) • 在公网服务器上安装 frps(s 代表 server)。 |
|
frp 可以做什么? 它可以把一台服务器的指定端口映射到另一台服务器的对应端口上。因此,我们可以将我们网站部署所处的内网虚拟机所运行的端口映射到我们公网服务器上的任意非占用端口上,从而实现在公网访问我们的内网服务。 |
内网虚拟机安装 frpc
这里我们将使用 1Panel 自带的应用商店来安装,其实本质上就是 docker 部署,和上面的操作其实一样,只不过是 1Panel 为我们可视化了而已。
|
Frpc 与 frps 必须使用 Docker 镜像配置,防止黑客利用 0day 漏洞进行攻击! |
打开我们的虚拟机面板,下载 frp 客户端(frpc):

点击安装,会弹出提示配置基础信息的弹窗,这里是设置管理 frp 面板的账号密码等:

点击确认,等待下载完成:

内网虚拟机配置 frpc
回到我们的内网虚拟机的 1Panel 面板,打开容器,点击编辑:

在配置文件里,将第一行的127.0.0.1改成我们要穿透的公网 IP:

然后在下方添加我们需要进行内网穿透的端口:
|
我的想法是,把内网目前启动的 5000 端口的网站映射到公网的 5000 端口上,所以配置如下。当然你也可以映射到公网上的其他的端口。 |
|
Bash [[proxies]] name = "web5000" type = "tcp" localIP = "127.0.0.1" localPort = 5000 # 内网需要穿透的端口,是我们在内网虚拟机上开放的 5000 端口 remotePort = 5000 # 将内网的服务在本端口提供,是外网访问使用的端口,可以用任何不冲突的端口,这里我也使用 5000 |

公网服务器安装 frps
登录我们在03免费的公网服务器与公网 IP领取的公网服务器,在公网服务器安装的 1Panel 上的应用商店安装 frps:

配置基本信息:

点击确认,等待安装完成:

公网放开指定端口
我们的公网服务器目前是开放了 frps 的服务端口7000和我们穿透到公网的端口5000。
•7000 端口是用来接收内网服务器的访问。
•5000 端口是我们把内网的对应端口映射到这里需要给公众访问的端口。
所以上面的这两个在现阶段都需要放开入站端口,以供 frps 接收和用户访问我们的网站。
|
在云服务器平台开放入站端口的具体方式请查看03免费的公网服务器与公网 IP【10. 在 Aurze 上开放 1Panel 入站端口】。 |
现在,我们访问我们的公网 IP 的 5000 端口,发现可以在公网访问了:
|
Bash 公网IP:5000 # 例如 44.22.33.11:5000 |

域名绑定
|
本文将假定你已经拥有一个已经托管到 Cloudflare 的域名。 接下来我们将介绍: • 如何进行域名的证书自动续签。 • 如何将域名反向代理到我们服务器的指定端口上。 |
安装 OpenResty
首先,切换到我们的公网服务器,打开面板,安装 OpenResty:

等待安装完成:

获取Cloudflare API 令牌
进入 Cloudflare 的总管理界面,在管理账户这里找到账户 API 令牌,点击创建令牌:

点击使用模板:

点击+添加更多:

分别授予读取与编辑权限:

接下来在区域资源里选择你想要使用和证书续签的域名:

而为了提高安全性,防止 API 外泄造成严重后果,我们可以将客户端 IP 地址筛选设置为我们所指定的那台公网服务器的 IP,设置为仅它可使用:

点击继续以显示摘要,点击创建令牌,复制保存令牌:

获取 DNS 账户
回到我们的公网服务器的 1Panel 面板,点击证书,点击DNS 账户:

点击创建,将我们的域名和我们 Cloudflare 的信息填写上,点击确认即可:

域名的证书申请与自动续签
之后我们点击申请证书:

按照如下格式填写:

点击确认,查看日志,确认成功:

域名的反向代理
|
域名的反向代理,就是用户的流量先访问域名,再转发给我们对应的服务端口。 |
按照图片所示填写,其中域名是可以添加子域名的,而代理地址可以指定我们服务器上的对应的开放端口,例如我们之前开放了5000 端口用于展示穿透后的网站,我们就可以给这个网站设置一个子域名来反向代理:

或是改成自己的本机 IP 也可以:

选择对应证书,点击确认:

点击确认,即可创建成功。
在 Cloudflare 上添加 A 名称
我们将我们添加的域名或是子域名的前缀名添加到 Cloudflare 上:

在这里写上我们加入的前缀,例如我为我的 5000 端口所代理的子域名是add.我的根域名.com,那么就填写:

现在访问网站来测试:

至此,我们已经可以成功使用我们的域名/子域名来进行域名的反向代理了。
网硕互联帮助中心






评论前必须登录!
注册