前置准备
安装(已安装则跳过)
1. 安装基础工具
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates2. 导入官方签名 (这步是为了安全,必须做)
wget -O - https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/openresty.gpg3. 添加仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/openresty.gpg] http://openresty.org/package/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/openresty.list4. 正式安装
sudo apt-get update
sudo apt-get install openresty -y确认安装路径:/usr/local/openresty/nginx/
配置目录:/usr/local/openresty/nginx/conf/conf.d/
打开文件:
sudo nano /usr/local/openresty/nginx/conf/nginx.conf- 按键盘
Ctrl+V(Page Down) 翻到文件最底部。 - 找到http的最后一个大括号
}。
在它上面一行插入:
include /usr/local/openresty/nginx/conf/conf.d/*.conf;这样以后添加配置就只需要进入
/usr/local/openresty/nginx/conf/conf.d/*.conf
- 保存并退出 (
Ctrl+O,Enter,Ctrl+X)。
# openresty
sudo mkdir -p /usr/local/openresty/nginx/conf/conf.d/
# 2. 再次检查配置是否正确
sudo openresty -t常用命令:
sudo openresty -t (检查),
sudo systemctl reload openresty (重载)
场景一:搭建一个静态网站 (HTML/图片)
这是最基础的用法,用于部署博客、企业官网或前端项目。
1. 准备网页文件 我们先创建一个存放网页的目录(建议放在 /var/www/ 下):
Bash
sudo mkdir -p /var/www/mywebsite
# 创建一个测试用的 index.html
echo "<h1>这是我的静态网站</h1>" | sudo tee /var/www/mywebsite/index.html2. 创建配置文件 新建文件:sudo nano /usr/local/openresty/nginx/conf/conf.d/mywebsite.conf
3. 写入配置
Nginx
server {
listen 80;
server_name example.com; # 将此处改为您的域名或服务器IP
# 网站根目录
root /var/www/mywebsite;
index index.html index.htm;
# 访问日志(可选,建议开启)
access_log logs/mywebsite_access.log;
error_log logs/mywebsite_error.log;
location / {
# 如果找不到文件,尝试返回 index.html (适用于 Vue/React 单页应用)
try_files $uri $uri/ /index.html;
}
}4. 生效
sudo openresty -t # 检查语法
sudo systemctl reload openresty现在访问您的域名/IP,就能看到“这是我的静态网站”。
场景二:反向代理 (配合 Python/Go/Node.js)
如果您在服务器上跑了一个 Python (Flask/Django) 或 Go 程序,监听在 127.0.0.1:8000,想通过 OpenResty 暴露给外网。
1. 创建配置文件 新建文件:sudo nano /usr/local/openresty/nginx/conf/conf.d/api_proxy.conf
2. 写入配置
Nginx
server {
listen 80;
server_name api.example.com; # 您的 API 域名
location / {
# 转发请求到后端的 8000 端口
proxy_pass http://127.0.0.1:8000;
# 必须携带的 Header,否则后端拿不到真实 IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 支持 WebSocket (如果需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}若有证书,走443端口,通常已经配置过80到443的强制HTTPS,因此此处省略
server {
# 1. 必须加上 ssl 关键字
listen 443 ssl;
# 2.这里填计划的域名
server_name openlist.develata.me;
# 3. 必须复用申请的域名证书
ssl_certificate /usr/local/openresty/nginx/conf/ssl/develata.me.crt;
ssl_certificate_key /usr/local/openresty/nginx/conf/ssl/develata.me.key;
# 4. SSL 协议优化 (保持一致性)
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
# 转发到其它端口
proxy_pass http://127.0.0.1:8888;
# Header 传递
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket 支持 (如果需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}场景三:利用 Lua 脚本 (OpenResty 独家功能)
这是 OpenResty 最强大的地方,可以在网关层做逻辑处理。例如:简单的 API 鉴权。
1. 创建配置文件 新建文件:sudo nano /usr/local/openresty/nginx/conf/conf.d/lua_auth.conf
2. 写入配置
Nginx
server {
listen 8090; # 监听 8090 端口测试
location /secret {
access_by_lua_block {
-- 获取 URL 参数中的 token
local token = ngx.var.arg_token
-- 如果 token 不是 '123456',直接拒绝访问
if token ~= "123456" then
ngx.status = 403
ngx.say("禁止访问:Token 错误或缺失")
ngx.exit(403)
end
}
# 只有通过了上面的 Lua 检查,才会执行下面的内容
default_type text/html;
content_by_lua_block {
ngx.say("<h1>欢迎进入机密区域!验证通过。</h1>")
}
}
}- 测试方法:
- 访问
http://ip:8090/secret-> 被拒绝 - 访问
http://ip:8090/secret?token=123456-> 成功
- 访问
场景四:配置 HTTPS (SSL 证书)
现在网站都需要 HTTPS。我们可以手动配置证书,或者使用 certbot。这里展示标准配置模板。
假设您已经有了证书文件(.crt 和 .key)。
1. 配置文件模板
Nginx
server {
# 监听443端口的ssl
listen 443 ssl;
# 自己域名
server_name example.com;
# 证书路径/path/to/your/certificate.crt
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
# 推荐的安全参数
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 如果有一个443端口静态页网站,相当于把原本的404换成别的
# 没有就不需要下面两行
# root /var/www/mywebsite;
# index index.html;
}
# HTTP 强制跳转 HTTPS
server {
listen 80;
# 自己域名
server_name example.com;
# 301永久重定向强制HTTPS
return 301 https://$host$request_uri;
}💡 核心排错清单
如果在配置过程中遇到问题,请按此顺序检查:
- 检查语法: 永远第一步执行
sudo openresty -t。 - 看日志: 报错原因都在这里:
tail -f /usr/local/openresty/nginx/logs/error.log
- 检查端口: 确认端口没被占用:
sudo ss -tulpn | grep 80
- 检查防火墙: 确认服务器防火墙(UFW/iptables)和云服务商的安全组放行了端口。