前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习OpenResty的正确姿势

学习OpenResty的正确姿势

作者头像
小柒2012
发布2018-04-13 11:47:54
8210
发布2018-04-13 11:47:54
举报
文章被收录于专栏:IT笔记IT笔记

前段时间老罗退出得到专栏事情闹得沸沸扬扬,另一位老罗也给出了合理的会员退费,感觉得到还是蛮贴心的。想想也是,毕竟精力有限,如今老罗也有了十亿的投资,集中精力做好手机才是主业。记得老罗刚开专栏那段时间很想订阅一把,但还是忍住了,年初就订阅了吴军博士的专栏,想想199大洋还是算了吧,毕竟不是真爱粉。

2.jpg
2.jpg

引言

其实今天的主角并不是老罗,如标题所述,今天来聊聊 OpenResty,2015年老罗在锤子科技T2发布会上将门票收入捐赠给了 OpenResty,也相信老罗是个有情怀的胖子。

有很多同学就问了,OpenResty 到底是个什么东西?比较逗的回答是,"就是 nginx 打个包。" 如果大家看过亿级流量网站架构核心技术这本书,相信不少读者应该知道 OpenResty 应用还是挺广泛的。

扯这么多,其实今天就是想体验一把,由于博主网站本身安装配置了Nginx服务,凑巧另一台服务器也装了Nginx,想想还有一台免费半年的机器闲着,服务器装的是centos7。

安装

推荐您使用yum安装以下的开发库:

代码语言:javascript
复制
yum install readline-devel pcre-devel openssl-devel -y

Docker容器还可能要安装:

代码语言:javascript
复制
yum install wget perl gcc -y

下载最新版本:

代码语言:javascript
复制
wget https://openresty.org/download/openresty-1.11.2.4.tar.gz

解压并重命名:

代码语言:javascript
复制
tar -xvf openresty-1.11.2.4.tar.gz
mv openresty-1.11.2.4 openresty

安装配置:

代码语言:javascript
复制
./configure

您可以使用下面的命令来编译安装:

代码语言:javascript
复制
make && make install

如果您的电脑支持多核 make 工作的特性, 您可以这样编译安装:

代码语言:javascript
复制
make && make install   -j2

为了方便启动,建立软连接:

代码语言:javascript
复制
ln -s /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx

配置文件

代码语言:javascript
复制
vi /usr/local/openresty/nginx/conf/nginx.conf
代码语言:javascript
复制
server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location / {
            default_type text/html;
            content_by_lua 'ngx.say("<p>Hello,科帮网</p>")';
        }
}

启动服务:执行 nginx命令即可,然后访问http://47.94.232.109/

使用场景

和大部分知名开源软件诞生在欧美国家不同,OpenResty 自身和依赖的主要组件都是金砖国家的开发者发明的,这点还挺有意思。

Nginx 是俄罗斯人发明的, Lua 是巴西几个教授发明的,国人章亦春把 LuaJIT VM 嵌入到 Nginx 中,实现了 OpenResty 这个高性能服务端解决方案。

通过 OpenResty,你可以把 nginx 的各种功能进行自由拼接, 更重要的是,开发门槛并不高,这一切都是用强大轻巧的 Lua 语言来操控。

  • 在 Lua 中揉和和处理各种不同的 nginx 上游输出(Proxy,Postgres,Redis,Memcached 等)
  • 在请求真正到达上游服务之前,Lua 可以随心所欲的做复杂的访问控制和安全检测
  • 随心所欲的操控响应头里面的信息
  • 从外部存储服务(比如 Redis,Memcached,MySQL,Postgres)中获取后端信息,并用这些信息来实时选择哪一个后端来完成业务访问
  • 在内容 handler 中随意编写复杂的 Web 应用,使用 同步但依然非阻塞 的方式,访问后端数据库和其他存储
  • 在 rewrite 阶段,通过 Lua 完成非常复杂的 URL dispatch
  • 用 Lua 可以为 nginx 子请求和任意 location,实现高级缓存机制

相关站点

Nginx使用教程: https://blog.52itstyle.com/tag/nginx/ OpenResty 中文官网:http://openresty.org/cn/ Nginx 维基官网:http://wiki.nginx.org/

最后,愿两个老罗都能够实现自己的梦想,愿每个程序员都能找到好的归宿,信春哥得永生,最主要的是姿势要帅。

700615905.png
700615905.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 安装
  • 使用场景
  • 相关站点
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档