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 重载失败。

一个可复制的五步流程:

  1. 备份:网站列表点备份,生成当前配置快照;
  2. 小改:一次只改一个地方,别一次动五个参数;
  3. 查语法:保存前检查语法(1Panel 保存时会提示);
  4. 重载:用重载而不是重启;
  5. 验证:立刻 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 核数,超了是浪费
单连接数上限 小 大 内存是硬约束
超时时间 短 可放宽 防止慢客户端耗尽连接

别犯的两个错:

  1. 抄“最强性能配置”:网上流传的“极限优化”配置往往来自高配机器,小服务器照抄直接 OOM。
  2. 调了不测:性能参数改完,用 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 节。