在 Ubuntu 20.04 系统中安装 OpenResty 后,Nginx 的核心目录结构与原版 Nginx 略有不同,因为 OpenResty 是在 Nginx 的基础上扩展了 LuaJIT、ngx_lua 模块、第三方插件及性能增强组件
下面将从目录结构、配置文件说明、核心配置解析和启动逻辑四个维度,带你全面理解 OpenResty 的 nginx 配置体系。⚙️


🧭 一、OpenResty 在 Ubuntu20 的默认安装目录

安装命令(推荐使用官方仓库):

sudo apt install openresty -y

查看安装路径:

whereis openresty

一般输出如下:

openresty: /usr/local/openresty

因此,主目录结构如下:

/usr/local/openresty/
├── nginx/                    # Nginx 主程序目录
│   ├── conf/                 # 核心配置文件目录
│   ├── html/                 # 默认网页目录
│   ├── logs/                 # 日志目录
│   ├── sbin/                 # 可执行文件目录(nginx)
│   └── client_body_temp/     # 临时文件目录
├── luajit/                   # 内置 LuaJIT 解释器
├── lualib/                   # Lua 标准库
├── site/                     # 第三方 Lua 脚本目录
└── resty/                    # OpenResty 内置模块

核心位置: /usr/local/openresty/nginx/conf/ 是整个服务配置的中枢。


📁 二、nginx/conf 目录内容结构解析

/usr/local/openresty/nginx/conf/
├── nginx.conf            # 主配置文件(核心入口)
├── fastcgi.conf          # FastCGI 配置
├── mime.types            # 文件类型定义表
├── koi-utf / koi-win     # 编码映射文件(较少使用)
├── proxy.conf            # 反向代理相关配置
├── lua/                  # 自定义 Lua 逻辑目录
└── vhosts/               # 虚拟主机配置目录(推荐自建)
文件/目录 功能说明
nginx.conf 主配置文件,定义全局参数、HTTP、stream、server 等模块。
mime.types 定义文件扩展名与 MIME 类型映射关系,例如 text/htmlapplication/json
fastcgi.conf PHP/FastCGI 网关配置,用于 PHP、Python 等反向代理。
proxy.conf 配置上游代理参数,如超时、header 转发等。
lua/ 存放 Lua 业务逻辑脚本,如自定义访问控制、限速、鉴权逻辑。
vhosts/ 多站点独立配置目录,主配置中通过 include vhosts/*.conf; 调用。

⚙️ 三、主配置文件 nginx.conf 详解

打开主配置文件:

sudo vim /usr/local/openresty/nginx/conf/nginx.conf

标准结构如下:

# 全局配置
worker_processes auto;
error_log logs/error.log;
pid logs/nginx.pid;

events {
    worker_connections 1024;
}

# HTTP 模块配置
http {
    include       mime.types;
    default_type  application/octet-stream;

    lua_package_path "/usr/local/openresty/lualib/?.lua;;";
    lua_package_cpath "/usr/local/openresty/lualib/?.so;;";

    sendfile on;
    keepalive_timeout 65;

    # 访问日志
    access_log logs/access.log;

    # 引入虚拟主机配置
    include conf.d/*.conf;
    include vhosts/*.conf;
}

详细解释:

  • worker_processes auto;:自动检测 CPU 核心数,提升并发性能。

  • events {}:定义事件模型与连接数。

  • http {}:HTTP 服务块,是 Nginx 主业务逻辑区域。

  • lua_package_path:声明 Lua 模块查找路径。

  • include vhosts/*.conf;:引入多个站点配置,实现多站点支持。

注意: OpenResty 允许在 http/server/location 中嵌入 Lua 逻辑,灵活度极高。


🧩 四、示例虚拟主机配置文件

路径:

/usr/local/openresty/nginx/conf/vhosts/example.conf

配置示例:

server {
    listen 80;
    server_name www.example.com;

    root /usr/local/openresty/nginx/html;
    index index.html;

    # 访问日志
    access_log logs/example_access.log;
    error_log logs/example_error.log;

    # 使用Lua脚本进行访问控制
    location /api/ {
        default_type 'application/json';
        content_by_lua_file conf/lua/api_router.lua;
    }

    # 静态文件
    location / {
        try_files $uri $uri/ =404;
    }
}

解释:

  • server_name:定义域名。

  • content_by_lua_file:调用 Lua 脚本实现动态逻辑。

  • access_logerror_log:可独立记录站点日志,便于分析。


🧠 五、工作流程图(OpenResty 请求生命周期)

graph TD
A[客户端请求] --> B[nginx监听80/443端口]
B --> C[匹配server块]
C --> D[执行Lua阶段 init_by_lua / access_by_lua]
D --> E[命中location规则]
E --> F[content_by_lua或静态文件输出]
F --> G[记录日志并返回响应✅]

关键特性: Lua 逻辑在请求阶段动态执行,无需重启 Nginx 即可热更新业务逻辑。


🔍 六、常用命令与验证方式

命令 功能说明
sudo openresty -t 测试配置文件语法是否正确
sudo openresty -s reload 平滑重载配置(不中断连接)
sudo openresty -s stop 停止服务
sudo tail -f /usr/local/openresty/nginx/logs/error.log 实时查看错误日志
sudo systemctl restart openresty 通过 systemd 管理服务

📊 七、核心配置说明表

模块 指令 作用 备注
全局块 worker_processes 控制工作进程数量 建议设为 auto
HTTP 块 lua_package_path 定义 Lua 模块加载路径 Lua 环境依赖
Server 块 server_name 定义虚拟主机域名 多域名支持
Location 块 content_by_lua_file 执行指定 Lua 文件 核心动态逻辑入口
日志配置 access_log / error_log 记录访问与错误日志 可独立配置

✅ 八、总结

OpenResty 是 Nginx + LuaJIT + 模块生态 的融合体,既保持了 Nginx 的高性能,又具备脚本化的灵活性。
在 Ubuntu20 环境下,它的目录结构规范、逻辑清晰,开发者只需掌握以下三点即可快速上手:

  1. 主配置文件路径: /usr/local/openresty/nginx/conf/nginx.conf

  2. 虚拟主机配置路径: /usr/local/openresty/nginx/conf/vhosts/

  3. Lua 逻辑目录: /usr/local/openresty/nginx/conf/lua/

🌟 一句话总结:
OpenResty 的 Nginx 配置体系本质是“Nginx 的性能 + Lua 的灵魂”,既能支撑高并发,又能快速实现业务逻辑,是现代高性能网关与CDN节点的首选架构之一。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐