蓝易云 - Linux学习之Ubuntu20中OpenResty的nginx目录里内容和配置文件
在 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/html、application/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_log与error_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 环境下,它的目录结构规范、逻辑清晰,开发者只需掌握以下三点即可快速上手:
-
主配置文件路径:
/usr/local/openresty/nginx/conf/nginx.conf -
虚拟主机配置路径:
/usr/local/openresty/nginx/conf/vhosts/ -
Lua 逻辑目录:
/usr/local/openresty/nginx/conf/lua/
🌟 一句话总结:
OpenResty 的 Nginx 配置体系本质是“Nginx 的性能 + Lua 的灵魂”,既能支撑高并发,又能快速实现业务逻辑,是现代高性能网关与CDN节点的首选架构之一。
更多推荐


所有评论(0)