整理总结OpenResty安装、配置与使用方法

本文详细介绍OpenResty的安装步骤,包括依赖库的安装、OpenResty的下载与安装,以及如何通过Lua脚本配置Nginx日志,实现高并发Web应用的搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenResty简介

OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

Lua简介

Lua是一个简洁、轻量、可扩展的程序设计语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。

OpenResty安装

1.安装依赖库

yum install readline-devel pcre-devel openssl-devel gcc

2.下载及安装OpenResty

wget https://openresty.org/download/openresty-1.9.15.1.tar.gz
tar xvf openresty-1.9.15.1.tar.gz
cd openresty-1.9.15.1
./configure --with-luajit && make && make install

激活LuaJIT

组件被用于构建 OpenResty。所有的组件可以被激活或禁止。 大部组件默认是激活的,也有部件不是。 LuaJIT、 DrizzleNginxModule、PostgresNginxModule和IconvNginxModule 默认是没有激活的。您需要通过以下选项在编译 OpenResty的时候将它们各自激活, --with-luajit、 --with-http_drizzle_module、 --with-http_postgres_module和 --with-http_iconv_module 。

安装好的OpenResty

在这里插入图片描述
从上图可以看到,openresty在/usr/local目录下

OpenResty启动

通过下述方式启动Nginx。如果没有任何输出,说明启动成功,-p 指定我们的项目目录,-c 指定配置文件。

/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
/usr/local/openresty/nginx/sbin/nginx -p ‘pwd’ -c /usr/local/openresty/nginx/conf/nginx.conf

为openresty下的nginx建立软链(非必需)

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

则可使用如下方式启动

/usr/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf

在浏览器中访问:

在这里插入图片描述

OpenResty配置Lua

由于原生的Nginx日志没有resp_body这一选项,通过在nginx.conf中添加Lua脚本的方式定义resp_body。

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

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    log_format log_resp_body  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '$request_time $bytes_sent $request_length "$request_body" "$resp_body"';

    access_log  logs/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        access_log  logs/access.index.log  log_resp_body;

        lua_need_request_body on;

        set $resp_body "";

        body_filter_by_lua '
            local resp_body = string.sub(ngx.arg[1], 1, 1000)
            ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
            if ngx.arg[2] then
                ngx.var.resp_body = ngx.ctx.buffered
            end
        ';

        location / {
            root   html;
            index  index.html index.htm;
        }

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

检测Nginx配置是否正确

/usr/sbin/nginx -t

重启Nginx

/usr/sbin/nginx -s reload

验证Lua配置是否成功

tail -f access.log

在这里插入图片描述

tail -f access.index.log

在这里插入图片描述

### OpenResty 生产环境部署配置最佳实践 #### 配置文件优化 为了确保OpenResty在高并发场景下的稳定性和性能,在生产环境中应精心设计`nginx.conf`配置文件。推荐设置worker_processes参数为CPU核心数,以便充分利用多核处理器资源[^1]。 ```nginx worker_processes auto; events { worker_connections 1024; # 根据服务器内存大小调整此数值 } ``` #### 日志管理策略 日志记录对于排查线上问题至关重要。应当启用详细的错误日志级别,并定期轮转日志文件以防占用过多磁盘空间。可以考虑集成ELK栈(Elasticsearch, Logstash, Kibana)来进行集中化日志分析处理[^2]。 ```nginx error_log /var/log/nginx/error.log warn; access_log off; # 关闭访问日志可提高性能 ``` #### 安全加固措施 保护Web应用程序免受攻击是至关重要的一步。通过限制允许连接的IP地址范围、开启SSL/TLS加密通信等方式增强安全性;同时利用Lua脚本编写自定义的安全规则来抵御特定类型的威胁[^3]。 ```nginx http { lua_package_path "/path/to/lua/modules/?.lua;;"; server { listen 80 ssl http2; ... location /secure_area { access_by_lua_block { local ip = ngx.var.remote_addr if not string.match(ip, "^192%.168%..*") then return ngx.exit(ngx.HTTP_FORBIDDEN) end } proxy_pass http://backend_service; } } } ``` #### 自动化运维方案 采用CI/CD流水线自动化部署流程能够有效减少人为失误带来的风险。借助Jenkins、GitLab CI等工具实现持续集成交付功能,配合Ansible或SaltStack完成远程批量操作任务,从而简化日常维护工作量并提升效率[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值