普通视图

发现新文章,点击刷新页面。
今天 — 2024年9月17日杜老师说

Nginx 集成 ModSecurity 实现 Web 应用防火墙功能

作者 Teacher Du
2024年9月3日 00:00

要在Nginx中集成ModSecurity以实现Web应用防火墙(WAF)功能,你可以按照以下步骤操作:

安装依赖包

首先,你需要安装一些必要的依赖包,例如libxml2、libpcre3、libapr1等。这可以通过包管理器完成,例如在Debian或Ubuntu系统上使用apt-get

1
2
sudo apt-get update
sudo apt-get install libxml2 libxml2-dev libpcre3 libpcre3-dev libapr1 libapr1-dev libaprutil1 libaprutil1-dev

下载并编译ModSecurity

接着,从GitHub克隆ModSecurity的源代码,编译并安装:

1
2
3
4
5
6
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
./build.sh
./configure
make
sudo make install

下载并编译Nginx ModSecurity模块

然后,下载Nginx ModSecurity模块并编译Nginx以包含该模块:

1
2
3
4
5
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
cd /path/to/nginx/source
./configure --add-module=/path/to/ModSecurity-nginx
make
sudo make install

配置ModSecurity

在Nginx的配置文件中启用ModSecurity并指定规则文件。例如,在nginx.conf中添加:

1
2
3
4
5
6
7
8
9
10
11
load_module modules/ngx_http_modsecurity_module.so;
http {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
server {
location / {
proxy_pass http://backend;
modsecurity on;
}
}
}

使用OWASP核心规则集

你可以使用默认的OWASP核心规则集(CRS),这是一个广泛认可的标准规则集,专门用于检测和阻止Web应用程序攻击。克隆CRS并将其配置到ModSecurity中:

1
2
git clone https://github.com/coreruleset/coreruleset /etc/nginx/modsec/coreruleset
cp /etc/nginx/modsec/coreruleset/crs-setup.conf.example /etc/nginx/modsec/coreruleset/crs-setup.conf

修改/etc/nginx/modsec/main.conf来包含CRS配置:

1
2
Include /etc/nginx/modsec/coreruleset/crs-setup.conf
Include /etc/nginx/modsec/coreruleset/rules/*.conf

重启Nginx

最后,重启Nginx以应用更改:

1
sudo service nginx reload

以上步骤概述了如何在Nginx中集成ModSecurity以实现WAF功能。确保在实际部署前在测试环境中验证配置的有效性,并根据需要调整规则以避免误报。引用自 。

  •  

使用 Docker 自托管 VSCode 网页版

作者 Teacher Du
2024年8月28日 00:00

code-server 是一款强大的开源工具,它将 Visual Studio Code (VS Code) 带入了基于Web的在线环境。它使您可以通过Web浏览器远程访问和使用VS Code的功能,而无需在本地安装VS Code应用程序。

主要功能

远程开发:允许您从任何地方使用Web浏览器访问您的开发环境。这意味着您可以在不同设备和操作系统上一致地编写、编辑和运行代码。

轻量级:是一个轻量级的应用程序,资源占用较少,因此在资源有限的服务器上运行也很高效。这使得它成为为团队提供统一的开发环境或在云中进行开发的理想工具。

丰富的扩展生态系统:您可以安装并使用VS Code的广泛扩展库,从而扩展编辑器的功能。这包括语言支持、主题、代码片段和工作流程自动化等方面。

多语言支持:提供了广泛的编程语言支持,包括JavaScript、Python、Java、C++等。您可以在一个统一的开发环境中处理多种编程任务。

集成终端:它内置了一个终端,让您可以在同一界面中执行命令、安装依赖和运行应用程序。

版本控制:集成了版本控制系统(如Git),使您可以轻松地管理和跟踪代码更改。

团队协作:允许多个开发人员同时协作,通过共享工作区和代码库来增强团队协作能力。

自定义设置:您可以根据自己的需求自定义编辑器的设置,包括主题、快捷键和工作区配置。

使用 Docker 自托管 VSCode 网页版是一种便捷的方式,可以让你在任何设备上通过浏览器访问 VSCode 的功能。以下是部署的简要步骤:

安装 Docker

首先确保你的系统上安装了 Docker。你可以使用以下命令来安装 Docker:

1
curl -fsSL https://get.docker.com | sh

如果需要,你还可能需要关闭防火墙并设置 Docker 开机自启动:

1
2
3
systemctl disable --now firewalld
setenforce 0
systemctl enable --now docker

拉取 code-server 镜像

使用 Docker 命令拉取 code-server 镜像:

1
docker pull codercom/code-server:latest

创建目录

在宿主机上创建一个目录用于持久化配置和数据:

1
mkdir /docker/vscode -p && cd /docker/vscode

运行容器

运行 Docker 容器,并设置密码和端口映射:

1
docker run -d --name code-server -p 8000:8080 -e PASSWORD=your_password -v /docker/vscode/data:/root/.vscode-server codercom/code-server:latest

这里 your_password 替换为你想要设置的密码。

验证容器

检查容器是否成功运行:

1
docker ps -a

访问 VSCode

在浏览器中访问 http://服务器IP地址:8000 并使用设置的密码登录。

code-server 是一个开源项目,它允许你在远程服务器上运行 VSCode,并且提供了丰富的插件生态和界面定制化功能。使用 Docker 部署 code-server 可以轻松地在任何支持 Docker 的环境中运行,同时保证了代码的安全性和可移植性 。

此外,code-server 支持多人协作和远程开发,为开发者提供了前所未有的便捷体验 。它还支持丰富的自定义插件和扩展,满足了不同用户的个性化需求,使得开发过程更加高效、灵活 。

如果你在部署过程中遇到问题,可以参考社区提供的详细教程和文档,或者在相关论坛和社区中寻求帮助。

  •  

去不图床外链较慢说明

作者 Teacher Du
2024年8月25日 00:00

近期有小伙伴频繁反馈说图床外链速度较慢,杜老师因工作原因,一直没时间彻底解决该问题,只能通过增加临时节点缓解访问压力。目前工作压力减小,再次也说明一下该问题,以及相关解决措施。

原因分析

先说一下目前图床架构。官网源码及图床数据皆托管在家中服务器,通过内网穿透至外网服务器,使用星极世纪赞助的 CDN 进行加速。

负责内网穿透的外网服务器,这里简称为中转服务器。目前有三台中转服务器,一台负责中转图床官网,两台负责中转图片外链。

问题就出现在其中一台中转服务器上。该服务器被持续攻击中,使得回源失败,故而导致外链较慢。

有小伙伴可能好奇,为何躲在 CDN 后面的中转服务器会出现 IP 泄露的问题。这是因为在软云跑路后,自建的 CDN 节点不够用了,中转服务器只能放置前端了。

图床现状

目前图床在星极世纪赞助下勉强生存,之前的服务器还有一年使用周期,暂时不会考虑扩容。

不过小伙伴们不用担心运营问题。去不虽小,但不会出现数据丢失或突然跑路的情况。敬请放心使用!

随着图床用户越来越多,并发请求量增大的关系,造成外链速度减缓。可能根据使用量考虑增加 CDN 节点,或中转服务器。

在此感谢星极世纪的 CDN 赞助,会在后面联合星极世纪搞个活动,推广一下!

解决措施

为了解决现阶段的外链缓慢问题,已对现有架构做出调整。

将去掉图片外链中转服务器,CDN 直接回源至家中服务器的外网端口。

这种情况会在访问压力较大时出现重新拨号的问题,而家用带宽重新拨号后,IP 会自动更换。

虽然有 DDNS 实现解析同步,但解析缓存有至少一分钟的延迟,所以会出现访问失败的情况。

目前使用监控加备份线路的方式应对这一问题,如果小伙伴有更好方案,可以推荐给杜老师!

备份线路类似于中转服务器,通过内穿实现快速连接,相比 DDNS 回源生效速度快。

未来方向

除了外链问题外还有很多程序功能上面的建议,杜老师也一一反馈给了图床程序作者。

根据开发群中反馈,团队目前正大力开发 2.0 版本,预计本年的十月末会有内测版本。

不知是否会吸收小伙伴们之前提出的建议,还请期待。

另外如有低价稳定的云平台,欢迎留言推荐!

最后说下此文主要解释外链缓慢原因,以及杜老师的解决方案。

写的有一些乱,因为是变开会编写,领导那激情的发言总能不经意间打断杜老师的思路。又不能削领导,只能通过疯狂敲击键盘宣泄心中不满!

  •  
昨天以前杜老师说

杜老师的视频录制流程

作者 Teacher Du
2024年8月22日 00:00

距离上次更新,杜老师收到了来自 18 位小伙伴的催更。奈何工作量比较大,近期一直销声匿迹。昨天终于忙完了所有的工作,在好好睡了一觉后,带着饱满的精神状态与各位分享一下近况!

聊聊近况

因为博客,小伙伴与杜老师从陌路走向熟知。很多小伙伴熟悉杜老师后会感叹一句:你真是老师啊!

杜老师是 2013 年正式步入社会,做的第一份工作是在培训公司当助教。

这份赶鸭子上架的工作,让杜老师内向的人设逐渐崩塌了,甚至一度被学员们评为头牌讲师「这个头牌,是正经的」

杜老师的这个称呼,就是从那时候来的,甚至于家人都会如此称呼我。故此并非自视甚高,而是职业本就如此。

目前依旧从事讲师工作,因公司的一些安排,需要录制视频教程。而近期一个月期间,一直奔忙于此。

时间紧任务重,需要梳理大纲、编写课件、整理文稿、录制视频、出试题目。

作为一个资深社畜,深知无工作不生活之理,所以不得已调整了权重,减少了博客运营的精力分配。

昨天终于忙完了所有的工作,在好好睡了一觉后,决定分享一下近况,补更近期所欠文章。

大致流程

  1. 梳理大纲:其实就是众位老师集思广益,堆叠出课程的内容。就好比说这位老师说需要个卧室,那位老师说需要个书房。杜老师的工作就是将所有的内容逻辑化系统化,简单来说就是从易到难;

  2. 编写课件:这是一门学问,需要考虑课程的系统性和完整性。杜老师所编写的是 Linux 系统类课程,涉及到的命令较多,要讲命令功能与实际工作相结合,让学员们知道在工作中遇到类似问题,应该如何解决;

  3. 整理文稿:目前公司讲师有限,很多交付工作「上课」都是由代理讲师完成的,各讲师的技术水平参差不齐。如何保证标准化授课流程呢?这就需要整理授课文稿,讲师照词念就行了,甚至不需要理解其中知识点;

  4. 录制视频:上课形式分为直播、录播两种,两者的侧重点不同,直播是老师直接讲解课程的内容,录播是观看标准课,遇到问题再由老师解答。可以理解成主动学习和被动学习。录播课程要求讲师条理清晰、解释透彻、举例易懂,总之要求还是非常高的。

所用工具

前面提到了直播和录播两种形式。每个讲师擅长领域不同,如杜老师更为偏好直播课程。

因为直播课程学员可以参与其中、与之互动,随时反馈授课情况,方便讲师第一时间做出调整,保证授课效果。

录播课程因为不能确定受众,所呈现的讲解形式更加但一,故而辅助词的限制很多,对于杜老师这种老湿傅,很难自由发挥。

还好有 AI 辅助工具。杜老师借助 Kimi「看清楚是 Kimi 不是 TiMi」平台生成文稿,再由 AI 生成杜老师音色语音文件。

之后通过 PPT 工具导出 PNG 格式图片,使用 Adobe Premiere Pro 剪辑并合成视频。

说的比较简单,但生成语音文件一步特麻烦。因为文稿中包含大量的命令,熟悉 Linux 的小伙伴都知道,很多命令是单词的缩写,口播并非标准英文发音。就需要手动去标识,非常耗时。

脚本分享

杜老师将 PPT 逐页导出 PDF「因为 AI 输出量有限,整体导出效果很不理想」并接入 Kimi 进行文稿生成。在使用前需要先安装 OpenAI 模块,以 Ubuntu 系统为例,命令如下:

1
2
3
4
sudo apt update
sudo apt -y install python3-pip
pip install --upgrade pip
pip3 install openai

以下是 Python 脚本,需调整 api_key,将 moonshot.pdf 替换为实际文件名:

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
from pathlib import Path
from openai import OpenAI

client = OpenAI(
api_key="MOONSHOT_API_KEY",
base_url="https://api.moonshot.cn/v1",
)

file_object = client.files.create(file=Path("moonshot.pdf"), purpose="file-extract")

file_content = client.files.content(file_id=file_object.id).text

messages = [
{
"role": "system",
"content": "您是 Kimi,由 Moonshot AI 提供的人工智能助手,您更擅长中文和英文的对话。您会为用户提供安全,有帮助,准确的回答。同时,您会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。",
},
{
"role": "system",
"content": file_content,
},
{"role": "user", "content": "根据文中内容生成完善的演讲词。"},
]

completion = client.chat.completions.create(
model="moonshot-v1-32k",
messages=messages,
temperature=0.3,
)

print(completion.choices[0].message)
  •  

PicHoro 一个用于快速上传图片和管理图床的移动端工具

作者 Teacher Du
2024年8月19日 00:00

杜老师最近因工作繁忙,没有精力维护博客,预计在 9 月 2 日后恢复更新。有小伙伴反馈说在手机端使用去不图床时,出现 URL 遮挡的问题。奈何杜老师不懂得前端技术,只能寻求懂前端的朋友协助。在等待的期间,推荐一款手机端的图床管理工具!

工具介绍

PicHoro 是一款基于 Flutter 手机端图床管理、上传、下载工具。

截止至文章发布日,最新版本为 V2.4.0。与 PicGo 配置互通,可以直接扫码导入。

主要功能含云存储、图床、云服务器平台,以及网盘管理,文件上传、下载管理,及各种格式的链接分享。

支持多种图片、文本文件、音视频在线预览和播放。

下载地址

目前仅有安卓版本,杜老师已转存到网盘中,无需注册及下载网盘客户端,点击地址即可下载:

下载地址

工具配置

安装好工具后,首次打开时需授予文件读取权限。并点击下方最右侧的图标进入到设置页面:

在打开页面中,找到并且点击图床参数设置:

去不图床使用兰空程序,这里我们选择兰空图床:

默认参数为兰空免费版,这里我们点击右上角的图标,进入配置页面:

在子配置项中,选择任意一个,点击右上方三个点:

在下方弹窗中,点击修改配置:

登录去不图床,切换至 Tokens 页面,点击页面中创建 Token,并按下图所示勾选对应权限,最后点击保存:

记录图床生成的 Token,稍后粘贴到 PicHoro。注意 Token 仅显示一次,后期无法在图床中查看,如果遗矢还请重新生成:

根据下图所示依次填写相关信息。需要注意的是,除需要填写上面的 Token 外,其余参数按照下图内容即可。输入好信息后点击保存配置:

切换回子配置页面,再次点击已配置项右上角三个点:

在下方弹出中,点击替代图床默认配置:

返回上一级页面中,会看到部分设置项已被替换。这里无需任何操作,直接返回至主页面即可:

工具使用

在主页面的下方可选择拍照,或者从相册中选择图片。点击全部开始进行图片上传,上传后会自动复制图片外链地址:

通过主页下方的第二个图标,点击后可查看已上传的图片。在该页面中可点击图片进行流览,长按图片进行复制外链地址,勾选图片并点击右上角进行删除。点击齿轮图标可设置删除图片时是否删除云端文件:

  •  

治愈系小天使「多图预警」

作者 Teacher Du
2024年8月16日 00:00

应王云子童靴需求,更新一篇有关治愈系天使的日常。杜老师很少会更新生活类的文章,不过有很多小伙伴反馈,说技术性文章太过专业,来了之后不知如何评论。这段时间决定分享一些生活类的文章,欢迎小伙伴们多多互动!

治愈原理

猫咪的治愈属性有着深厚的科学原理。首先,猫咪某些行为和特征能够激发人类的保护欲和情感联结。例如,猫咪轮廓、姿态、面部表情和声音都容易让人联想到可爱的婴儿,从而引起人类情感反应。此外,猫咪互动方式更接近人际关系的特点,它们有独立性情和喜好,能够与人类建立亲密而有空间的关系。

猫咪呼噜声也是一种重要的治愈元素。这种声音可以刺激人类听觉神经,让人感到舒缓,减少外界噪声影响,促进感官放松。医学发现,猫的呼噜声频率处于 25-150Hz 之间,属于较低频的声音,可促进人体康复并缓解疼痛。动物学家们还发现,猫在疼痛时也会发出呼噜声,这可能是因为低频率声音有助于它们的肌肉和骨骼恢复。

宠物疗法作为一种相对较新疗法,已证明对所有年龄段的人都有益,能够显著减少压力和焦虑等情绪生理反应。动物辅助介入疗法在专业理疗师的陪同下,已在医院、养老院及学校等场所帮助人们减压和康复。

此外,宠物对儿童和老人的积极影响也得到了研究的支持。宠物可以作为儿童忠实玩伴,提供安慰、自尊,减少孤独感和恐惧。对于老人,宠物的陪伴可以缓解孤独感,减轻焦虑情绪,提高生活的满意度。

日常照片

不管是装啥的,只要是个盒子,那就是本喵的:

我正在看着你,看着你目不转睛儿。猫猫准备出动:

柔软有弹性的枕头是本喵的最爱,学习太累,摘下眼镜休息一下:

是谁掌灯,推出去挠脚心!影响本喵的睡眠了:

要给本喵打码!不对!本喵命你尽快删除这张照片,向喵星发射信号这种机密怎么能被其他人知晓:

你就这样让我看着你吗?真的不给我一口吗?我要用眼神谴责你:

果然梦里什么都有,小鱼干太好吃了导致本喵舌头都忘记收回去了:

把 jiojio 揣好,本喵有自己的过冬方式:

这些都是本喵卖萌打下来的天下:

本喵新研发的五体投地睡法,能采集天地之灵气:

本喵另研发的大开大合,四 jio 朝天睡法,能吸取日月之精华:

叫我干啥,我正在和窗外小母猫交流感情呢:

伸展运动,哼哼,是不是很长呢:

看书太累,休息休息:

不要挑衅,你最好把你手里的小羽毛棒交给本喵:

灵气吸太多了,要抬头喘口气:

猫的单位可以是一辆猫,一条猫也可以是一碗猫:

喘气完毕,继续采天地之灵气:

睡得正香,叫我干啥:

看不到本喵眼神吗?快把你手上的猫条给我!再顺便擦一下眼屎谢谢:

本喵都表现这么明显了,你是不是得做点啥?就这么站那拍照吗:

你看,这满满都是本喵的爱心:

嗯嗯~真香:

本喵就知道人类会败倒在我毛爪之下:

没有礼貌!小猫咪睡觉的时候是不可以被打扰的:

电视上说,腿这样放可以有效防止浮肿:

嗯嗯~这个东西按摩下巴还是很舒服的:

给我一个箱子,我可以把它从 3D 的变成 2D 的。猫猫封印术在本喵这是不存在的:

只留一只手手也可以迷死你,小样:

看什么看,你的椅子从今天起是我的了,知道了吗:

你在吃什么呢,也给本喵一口:

一二三四~伸展运动:

本喵为猫方正,休想拿一条小鱼干就收买我,除非两条:

完了,人类阻挡了我向喵星发射的信号,怎么办在线等:

这个小围巾很不错,就是本喵的了,自信:

本喵什么时候有了屁股缝缝,这是毁谤,肯定是 PS:

这个高度适合追剧,很好很好:

人类,承认吧你为我着迷,哼哼:

  •  

服务器操作系统安全加固项

作者 Teacher Du
2024年8月13日 00:00

应宋童鞋需求,整理了一些服务器操作系统的安全加固项。因为涉及大量内容,所以直接用 PDF 文档形式展示,供需要的小伙伴们借鉴。需要注意的是:由于服务器配置和操作系统版本不同,部分内容可能无法直接复制粘贴,需要根据实际情况进行修改。

安全加固的必要性

服务器操作系统的安全加固是确保网络设施安全的关键步骤,可以有效降低安全风险,保护数据安全,提高服务器可用性和可靠性。安全加固必要性主要体现在以下几个方面:

  1. 增强防护能力。通过安全加固,可增强服务器的防病毒和防黑客攻击能力,提高其物理和网络安全防护水平;
  2. 保护数据安全。防止数据泄露、损坏,确保服务器上存储和处理的数据的安全性;
  3. 保证系统稳定运行。通过加固,可提高服务器的可用性和可靠性,确保业务的连续性;
  4. 提高可管理性、可维护性。方便日常的监控和维护工作,及时发现并解决潜在的安全问题。

实施服务器加固的步骤通常包括:

  1. 及时更新操作系统、应用程序,打上最新安全补丁;
  2. 配置合理安全策略,包括账户权限管理、访问控制;
  3. 加密数据传输,使用 SSL 等技术确保数据传输过程中的安全;
  4. 配置防火墙的规则,限制不必要的网络访问,防止非法入侵;
  5. 定期备份数据,以便在数据损坏或丢失时能及时恢复;
  6. 评估现有安全状况,找出安全隐患、漏洞;
  7. 制定加固方案,包括操作系统、应用程序、网络设备配置;
  8. 实施加固措施,例如更新补丁、配置安全策略、设置防火墙等;
  9. 测试、验证加固效果,确保符合预期;
  10. 持续监控、维护,解决新出现的安全问题。

服务器安全加固项

需要指出的是,安全加固并非一劳永逸,而是一个持续过程。定期更新系统补丁和部署具有一流防护能力的安全防护系统,及使用自动化加固工具,都是确保服务器安全的有效手段。同时,安全加固服务的实施是一个系统工程,涉及多个层面的策略与实践,需要持续关注安全动态,不断优化加固措施:

  •  

Nginx 可视化编辑工具 nginxWebUI 安装和使用

作者 Teacher Du
2024年8月10日 00:00

在更新上一篇文章时有提到,类似 Nginx 可视化编辑的工具有很多。上篇提到的 Nginx UI 最近的更新还是一年前,本篇分享另一款可视化编辑工具,该工具更新较频繁,且功能也比较完善,感兴趣的小伙伴们可以试试!

写在前面

Nginx 可视化编辑工具的出现主要是为了简化 Nginx 配置复杂性,提高配置效率,降低运维成本。

Nginx 是一个功能强大的 Web 服务和反向代理服务器,但这也意味着它的配置项繁多且复杂,对于新手来说可能难以掌握。

使用可视化的编辑工具,用户可以通过图形界面进行配置,无需直接编辑配置文件,这样可以减少出错的可能性,同时也提高配置的效率。

如 nginxWebUI 这样工具,它不仅提供了配置 Nginx 的界面,还包括服务器指标监控、证书管理、日志查看功能。

使用工具,用户可轻松实现如反向代理、负载均衡、SSL 证书的申请与续签等高级功能,而且它们通常还提供了一些额外的便利性功能,比如配置文件版本控制、一键部署和自动续期等。

可视化工具的应用场景非常广泛,无论是对于需快速搭建环境的开发者,还是对于需管理多个 Nginx 服务器的运维人员,都能大大提高工作效率。例如,nginxWebUI 就支持集群管理,允许用户在一台机器上管理所有 Nginx 服务器配置文件,进行统一的修改与重启。

nginxWebUI 的简介

nginxWebUI 是一款图形化管理 Nginx 配置工具,可以使用网页来快速配置 Nginx 各项功能,包括协议转发、反向代理负载均衡、静态 HTML 服务器,证书自动申请、续签、配置,配置好后可一建生成 nginx.conf 文件,同时可控制 Nginx 使用此文件进行启动与重载,完成对 Nginx 的图形化控制闭环。

nginxWebUI 也可以管理多个 Nginx 服务器集群,随时一键切换到对应服务器上进行 Nginx 配置,也可一键将某台服务器配置同步到其它服务器,方便集群管理。

Nginx 本身的功能复杂,nginxWebUI 并不能涵盖 Nginx 的所有功能,但能覆盖 Nginx 日常 90%功能使用配置,平台没有涵盖到的 Nginx 配置项,可使用自定义参数模板,在配置文件中生成配置独特参数。

部署此工具后,配置 Nginx 时再也不用上网各种搜索配置代码,再也不用手动申请和配置 SSL 证书,只需在本工具中进行增删改查就可方便的配置和启动 Nginx。

nginxWebUI 的安装

1
docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8080" --net=host --restart=always cym1102/nginxwebui:latest

注意:启动容器时使用--net=host 参数,直接映射本机端口,因为内部 Nginx 可能用任意一个端口,所以必须映射本机所有端口。容器需映射路径/home/nginxWebUI:/home/nginxWebUI,此路径下存放项目所有数据文件,包括数据库和 Nginx 配置文件、日志、证书。且升级镜像时,此目录可保证项目的数据不丢失。-e BOOT_OPTIONS 参数可以填充 Java 启动参数,可以靠此项参数修改端口号。--server.port 不填默认则以 8080 端口启动。日志默认存放在/home/nginxWebUI/log/nginxWebUI.log

nginxWebUI 的使用

打开 http://IP:8080 进入 nginxWebUI 登录页面,第一次打开会要求初始化管理员账号:

进入系统,可在管理员管理里面添加修改管理员账号:

在 HTTP 参数配置中可以配置 Nginx 的 HTTP 项目,默认会给出几个常用的配置,其它需要的配置可自由增删改查. 可以勾选开启日志跟踪,生成日志文件:

在 TCP 参数配置中可以配置 Nginx 的 stream 项目参数,大多数情况下可不配置:

在反向代理中可配置 Nginx 反向代理,可开启 SSL 功能,可以直接从网页上传 PEM 文件和 KEY 文件,或者使用系统内申请的证书,可以直接开启 HTTP 转跳 HTTPS功能,也可以开启 HTTP2 协议:

在负载均衡中可配置 Nginx 负载均衡,在反向代理管理中可选择代理目标为配置好的负载均衡:

在证书管理中可以添加证书,并进行签发和续签,开启定时续签后系统会自动续签即将过期证书:

备份文件管理,这里可以看到 nginx.conf 的备份历史版本,Nginx 出现错误时可以选择回滚到某一个历史版本:

最终生成配置文件,可在此进行进一步手动修改,在确认修改无误后,可覆盖本机 conf 文件,并进行效验和重启,可选择生成单一 nginx.conf 文件还是按域名将各个配置文件分开放在 conf.d 下:

如有多台 Nginx 服务器,可都部署上 nginxWebUI,然后登录其中一台,在远程管理中添加其它服务器 IP 和用户名密码,就可以在一台机器上管理所有 Nginx 服务器了。提供一键同步功能,可以将某一台服务器的数据配置和证书文件同步到其它服务器中:

  •  

Nginx 可视化编辑工具 Nginx UI 安装和使用

作者 Teacher Du
2024年8月7日 00:00

应 LiuShen 童鞋需求,更新一篇 Nginx 可视化编辑工具部署及使用的教程。类似的工具有很多,本篇主要介绍下 Nginx UI,有关于其特性、安装、使用等的说明,感兴趣的小伙伴可以试一下!

写在前面

Nginx 在 Web 引擎占比中越来越高,原因在于 Nginx 的特性,如轻量性、高性能和反代理的能力。

现在云主机的用户越来越多,相比 Apache 这种重量级,Nginx 的轻量性成为了众多站长首选。

加上很多站长越来越青睐通过 Docker 部署服务,同 Nginx 的反代功能配合提高了配置效率。

但因为平时常用 Windows 系统,很多小伙伴不太会使用 Linux 部署网站的环境,所以绝大多数站长都选择了各类面板。

现有的面板功能性越来越强,体量也愈发的臃肿。有些小伙伴开始摒弃了面板部署,选择自行搭建、配置。

而 Nginx 的配置项比较多,徒手修改无疑增加了站点的维护压力。这时 Nginx 可视化编辑工具可以极大降低配置成本。

Nginx UI 的简介

Nginx UI 是一个全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置。

它提供实时服务器统计数据、一键部署、Let’s Encrypt 证书自动续签以及用户友好的网站配置编辑工具。

此外,Nginx UI 还提供了在线访问 Nginx 日志、配置文件的自动测试和重载、网络终端、深色模式和自适应网页设计功能。

Nginx UI 采用 Go 和 Vue 构建,确保在管理 Nginx 服务器时提供无缝高效体验。

Nginx UI 的部署

Nginx UI 有多种部署方式,杜老师更偏好使用 Docker 来一键部署。下面命令是将 Docker 的 80 端口和 443 端口分别映射到主机的 8080 端口和 8443 端口:

1
2
3
4
5
6
7
8
9
docker run -dit \
--name=nginx-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-v /mnt/user/appdata/nginx:/etc/nginx \
-v /mnt/user/appdata/nginx-ui:/etc/nginx-ui \
-v /var/www:/var/www \
-p 8080:80 -p 8443:443 \
uozi/nginx-ui:latest

部署好后,可以通过下面的地址访问 Nginx UI:

1
http://IP:8080

Nginx UI 的使用

Nginx UI 支持多种语言及日夜模式切换:

登录后可查看服务器的信息,包括运行时间、系统负载、CPU 内存与存储、流量统计等等:

可在网站管理页面中管理网站的配置,如添加站点等:

Nginx UI 支持负载均衡的配置:

可直接在 Nginx UI 中管理相关配置文件:

在正式页面中,可以管理站点证书,支持自动申请、续期:

在 Nginx 日志页面中可以查看访问日志和错误日志:

在环境页面中,可以添加并管理多台服务器 Nginx 的配置:

在用户管理页面中,可以添加多个用户,方便多人管理:

在偏好设置中,可以设置二次认证、日志分割等等:

  •  

通过 Gitea 部署 Hexo 教程

作者 Teacher Du
2024年8月4日 00:00

应 Zero 童靴需求,杜老师更新一篇通过 Gitea 部署 Hexo 的教程,可以实现通过 git 命令自动部署 Hexo 博客,并支持 VSCode 或者网页编辑器等形式更新站点内容。其部署思路同样适用于 Hugo 等静态博客框架。

写在前面

近年来静态博客框架占比越来越高了,其一大特性是可以托管到 Vercel 这类的免费平台上,进一步减少了博主运营成本。

但随着免费的资源越发紧俏,加上越来越严峻的网络限制,很多小伙伴开始将站点,迁移至境内平台上。

奈何境内的免费资源非常少,很多功能需要自行购买主机搭建,无疑增加了我们的使用成本以及学习成本。

本篇教程主要说明如何通过 Gitea 实现类似 GitHub Actions 那种自动部署功能,实现在主机上博客的更新和部署。

准备工作

  1. 需要在服务器上安装 Gitea,可以参考《使用 Docker 部署 Gitea 新一代的代码托管平台》一文部署;

  2. 需要在服务器上安装 Act Runner,可以参考《使用 Docker 部署 Gitea Actions 的 Runner》一文部署;

  3. 需要在服务器上安装 Hexo,可以参考《运行在云主机的 Hexo》一文部署;

  4. 需要在服务器上安装 Web 引擎,可选项非常多,杜老师使用 OpenResty,这里不多说部署方式了。

部署过程

  1. 新建站点目录。这里以 1Panel 面板为例,添加一个域名为 dusays.com 站点:
  1. 使用终端程序登录该服务器,并切换到站点目录,以刚刚的域名为例,命令如下:
1
cd /opt/1panel/apps/openresty/openresty/www/sites/dusays.com/index/
  1. 删除站点目录下的所有文件,并通过 Hexo 创建站点数据,命令如下:
1
2
rm -rf *
hexo init
  1. 创建 Act Runner 部署文件.gitea/workflows/deploy.yml,添加以下内容:
1
2
3
4
5
6
7
8
9
10
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]

jobs:
Explore-Gitea-Actions:
runs-on: self-hosted
steps:
- run: cd /opt/1panel/apps/openresty/openresty/www/sites/dusays.com/index/ && git pull origin main
- run: cd /opt/1panel/apps/openresty/openresty/www/sites/dusays.com/index/ && hexo generate
  1. 配置 git 上传的用户名和邮箱:
1
2
git config --global user.name "TeacherDu"
git config --global user.email "teacherdu@dusays.com"
  1. 生成 SSH 密钥并添加公钥到 Gitea,执行下面命令,然后一直回车,会生成 id_rsaid_rsa.pub。复制 id_rsa.pub 文件的内容并登录 Gitea,进入个人设置,添加到 SSH 公钥:
1
2
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
  1. 在 Gitea 上创建一个新仓库:
  1. 新建.gitignore 文件避免同步易变动文件,添加以下内容:
1
2
3
4
5
6
7
8
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
_multiconfig.yml
  1. 提交并推送到远程仓库:
1
2
3
4
5
6
git init
git checkout -b main
git add .
git commit -m "first commit"
git remote add origin https://gitea.dusays.com/penn/hexo.git
git push -u origin main
  1. 将站点的运行目录设置为 public

注意事项

可以直接在 Gitea 修改站点内容,或者通过 VSCode 等工具接入进行编辑。

不要直接修改服务器中站点文件,如果出现内容冲突导致无法自动部署,可以从 Gitea 中重新拉取数据解决该问题。

  •  
❌
❌