1.2 OpenResty 设置与 Nginx 配置
一句话判断
1Panel 的网站功能本质上是“OpenResty 配置生成器”,所以学好 OpenResty 设置,就是学好 1Panel 网站模块的下半场。核心就三条:重载优先于重启、改前先备份、性能参数按机器算。
OpenResty 在 1Panel 里的位置
先明确一件事:OpenResty 不是 1Panel 内置的,它通过应用商店安装。网站列表上方的工具栏可以查看和配置 OpenResty。
这意味着一个重要的边界:OpenResty 的版本由应用商店决定。WAF、TCP/UDP 代理这些功能都有 OpenResty 版本要求,页面检测到版本不兼容时会直接给你安装或升级入口。
五个可操作的能力:
| 能力 | 做什么 | 什么时候用 |
|---|---|---|
| 停止 / 启动 / 重启 | 整体生命周期管理 | 升级、排错 |
| 重载 | 不停机应用新配置 | 日常改配置只用这个 |
| 设置 | 状态、配置、性能、日志、模块 | 调优、看状态 |
重载 vs 重启:一个值的坚持
官方对重载的描述是:“允许用户在无需停机的情况下快速应用配置更改,确保网站服务的高可用性。”
为什么这件事重要?讲个真实的代价:
- 重启:OpenResty 主进程退出再起来。所有现有连接断开。用户正在上传的文件失败,正在支付的订单超时,长连接(WebSocket、SSE)全部掉线。
- 重载:主进程重新读取配置,优雅地让工作进程平滑切换。连接不断。
所以记住这条规则:
日常所有配置变更,一律用重载。只有重载解决不了的问题(升级、模块构建、进程卡死)才重启。
改配置的安全流程
OpenResty 设置里可以直接编辑配置文件,网站配置的资源标签页也能查看和修改单个网站的 OpenResty 配置。自由度很高,代价就是配错了全站挂。
官方文档的警告写得很直白:
保存配置前应检查语法;错误配置可能导致当前网站或 OpenResty 重载失败。
一个可复制的五步流程:
- 备份:网站列表点备份,生成当前配置快照;
- 小改:一次只改一个地方,别一次动五个参数;
- 查语法:保存前检查语法(1Panel 保存时会提示);
- 重载:用重载而不是重启;
- 验证:立刻
curl一下你的站点,确认 200。
如果重载失败、网站挂了怎么办?网站配置页有【默认配置】按钮,可以把配置文件恢复到默认状态。这是你的“后悔药”,但它恢复的是默认配置,不是你的备份——所以第 1 步的备份仍然不可省。
配置文件长什么样
OpenResty 的配置就是 Nginx 配置语法。一个网站的大致结构:
server {
listen 443 ssl http2;
server_name example.com;
root /opt/1panel/apps/openresty/openresty/www/sites/example.com/index;
index index.php index.html;
# 1Panel 生成的各类 location(伪静态、反向代理、防盗链……)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
进阶用户应该养成一个习惯:改完配置,去【资源】标签页看看 1Panel 到底生成了什么。 你在面板上点的每一个开关,最终都落到这份文件里。看懂了它,你才算真正理解 1Panel 在做什么。
反过来也成立:能看懂这份文件,你就知道哪些需求面板做不到、得自己写。这是从“用面板”到“玩转面板”的分水岭。
性能调整:按机器算,别抄网上的
OpenResty 设置里有性能调整页面。这类参数没有万能值,按你自己机器的内存和 CPU 算。
通用的思考框架:
| 参数方向 | 小机器(2 核 2G) | 大机器(8 核 16G+) | 原因 |
|---|---|---|---|
| worker 进程数 | 少 | 多 | 进程数 ≈ CPU 核数,超了是浪费 |
| 单连接数上限 | 小 | 大 | 内存是硬约束 |
| 超时时间 | 短 | 可放宽 | 防止慢客户端耗尽连接 |
别犯的两个错:
- 抄“最强性能配置”:网上流传的“极限优化”配置往往来自高配机器,小服务器照抄直接 OOM。
- 调了不测:性能参数改完,用
ab或wrk压一下才有结论,凭感觉调等于没调。
当前状态:排错第一站
当前状态页面显示:活动连接数、总连接数、总握手次数、总请求数、请求数、响应数、驻留进程。
这张表是判断“是不是 OpenResty 的问题”的第一手证据:
| 现象 | 往哪查 |
|---|---|
| 活动连接数突然爆高 | 是不是被刷流量了?看 WAF 频率限制 |
| 请求数高但响应数低 | 请求堆在队列里,后端慢或挂了 |
| 驻留进程数异常 | 检查 worker 配置和内存 |
养成习惯:网站慢,先看 OpenResty 当前状态,再去看应用日志。顺序反了会绕远路。
模块管理:进阶的深水区
模块页面可以查看、启用/禁用、创建、编辑、删除 OpenResty 模块。
关键的一条规则:
模块配置发生变化后,需要点击【构建】按钮以应用配置,构建成功后会自动重启 OpenResty。
注意——构建会自动重启,这是少数几个“必须重启”的场景。所以模块操作要挑业务低峰期做。
自定义构建模块的官方路径(这是高级用法,用得到再翻):
- 模块源码包放在
/opt/1panel/apps/openresty/openresty/build/tmp目录下(/opt是 1Panel 安装目录); - 参数类似
--add-module=/tmp/nginx-rtmp-module(必须是/tmp); - 脚本参考
unzip -o /tmp/nginx-rtmp-module.zip -d /tmp(必须是/tmp)。
这里有个反直觉的细节:源码包放在 build/tmp 下,但编译参数里写的是 /tmp。官方文档特意标注了两个“必须是 /tmp”,照做就行,别自作主张改路径。
日志:三个层级分清楚
1Panel 里和网站相关的日志有三处,别混了:
| 日志位置 | 看什么 | 操作 |
|---|---|---|
| 网站配置 → 日志 | 这个网站的正常/错误日志 | 实时追踪、下载、清空 |
| OpenResty 设置 → 日志 | OpenResty 本身的运行日志 | 实时追踪、下载、清空、按时间段和行数筛选 |
| WAF 拦截记录(专业版/企业版) | 被 WAF 命中的请求 | 筛选、导出、加黑白名单 |
网站 502 了看哪? 先看网站错误日志,里面通常有 connect() failed 或 upstream timed out 这类直接线索。OpenResty 日志看的是更底层的东西(比如 worker 崩溃)。
一个小技巧:网站日志支持实时追踪。排查问题的的时候开着实时追踪,然后复现一次问题,日志直接怼到眼前,比事后翻文件快得多。
默认站点和默认页面
两个容易被忽略的全局设置,在网站列表的高级设置里:
默认站点:当请求没匹配到任何已绑定域名时,用这个站回应。价值在于“兜底”——不让裸 IP 访问打到第一个站,也不让扫描器随便看到一个站。
默认页面(可修改,并能选择是否同步到已有网站):
| 页面 | 用途 |
|---|---|
| 网站 404 错误页 | 找不到资源时显示 |
| 网站不存在页 | 访问了未建站的域名 |
| 静态页面默认页 | 新建静态站点的初始页 |
| PHP 网站默认页 | 新建 PHP 站点的初始页 |
| 网站停用页 | 站点被停止后显示 |
“是否同步到已有网站”这个选项要想清楚再勾——同步会覆盖已有站点的同名页面。生产环境勾之前先备份。
网站生命周期管理
几个零散但重要的操作点:
设置过期时间:到期后系统自动停止站点。用途:给客户做的临时站、测试站、合同到期的项目。设了过期时间,就不会出现“测试站忘了关,半年后成漏洞入口”的事。
删除网站的三个选项:
| 选项 | 后果 |
|---|---|
| 强制删除 | 跳过错误直接删,可能留下垃圾或造成不一致 |
| 删除应用 | 连带删除关联的 1Panel 应用 |
| 删除备份 | 同时删掉这个网站的备份 |
官方警告说得很重:这三项都可能造成不可逆的数据丢失,操作前必须确认网站目录、关联数据库、应用数据和备份保留策略。
一条软建议:删站前先把备份下载到本地。1Panel 支持把备份记录下载到本地,下载后还能在上传备份页面重新导入。这是你换服务器或“后悔”时的最后退路。
本节要点
- 重载优先于重启,只有模块构建等少数场景必须重启;
- 改配置五步:备份 → 小改 → 查语法 → 重载 → 验证;【默认配置】是兜底;
- 性能参数按机器配置算,不抄网上的“最强配置”;
- 网站慢先看 OpenResty 当前状态,502 先看网站错误日志;
- 模块构建后自动重启,挑低峰期做。
延伸阅读:OpenResty 的配置项与【默认配置】说明,原文见 《1Panel 官方文档:功能手册》 的网站管理章节。
下一节:站点和配置都管好了,接下来讲备份与迁移——这是真正“出事时能救你”的部分,见 1.3 节。
