openresty安装(替代nginx可以用lua)

安装依赖

yum install -y gcc make pcre-devel zlib-devel openssl-devel curl

添加官方 yum 源(免编译关键)

# CentOS/EulerOS 7/8 用这个
wget https://openresty.org/package/centos/openresty.repo
mv openresty.repo /etc/yum.repos.d/

# CentOS 9+ 用这个(EulerOS 一般不用)
# wget https://openresty.org/package/centos/openresty2.repo
# mv openresty2.repo /etc/yum.repos.d/openresty.repo

yum clean all
yum makecache

直接安装最新稳定版(1.29.2.5)

# 直接装,自动覆盖 /usr/local/openresty
yum install -y openresty

# 验证版本(必须看到 1.29.2.5)
openresty -V
# nginx version: openresty/1.29.2.5 ✅

测试

openresty -t

安装服务

vi /etc/systemd/system/openresty.service
[Unit]
Description=OpenResty
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStart=/usr/local/openresty/nginx/sbin/nginx
ExecReload=/usr/local/openresty/nginx/sbin/nginx -s reload
ExecStop=/usr/local/openresty/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl enable openresty
systemctl start openresty

创建软链接(可选,更习惯用 nginx)

ln -s /usr/local/openresty/nginx/sbin/nginx /usr/bin/nginx

基础用法

# 检查配置语法
openresty -t

# 启动
systemctl start openresty

# 停止
systemctl stop openresty

# 重启
systemctl restart openresty

# 平滑重载(改配置不中断业务)
systemctl reload openresty

# 开机自启
systemctl enable openresty

# 查看运行状态
systemctl status openresty

# 查看版本
openresty -v

demo

server {
    listen 80;
    server_name test.com;

    # 原有Nginx转发逻辑完全保留
    location /api/ {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
    }

    # 新增OpenResty专属Lua逻辑
    location /lua-demo {
        content_by_lua_block {
            ngx.say("迁移成功,已启用OpenResty Lua能力")
        }
    }
}

常用功能-简易 IP 限流

http {
    lua_shared_dict ip_limit 10m;
}

location / {
    access_by_lua_block {
        local limit = require "resty.limit.count"
        local lim,err = limit.new("ip_limit",10,60) # 60秒10次
        local key = ngx.var.remote_addr
        local ok = lim:incr(key,1)
        if not ok then
            return ngx.exit(429)
        end
    }
}

常用功能-简易 Token 鉴权

access_by_lua_block {
    local token = ngx.var.arg_token
    if not token or token ~= "123456" then
        ngx.exit(401)
    end
}

posted @ 2026-07-09 17:18  ddgo's  阅读(16)  评论(0)    收藏  举报
.