2

nginx是耳熟能详的http服务器,被广泛的用于http服务、反向代理、负载均衡等场景。

但有时候我们需要其完成一些更加复杂的转发功能,此时则需要为nginx加入一些模块,而由于这些模块大多都不是nginx默认提供的,所以安装起来并不小白。

OpenResty封装了nginx, 通过汇聚各种设计精良的nginx模块(主要由 OpenResty 团队自主开发),将nginx变成了一更加强大、通用的Web应用平台。

安装

以macos为例,其它系统请参考官方文档的安装教程
如果我们的电脑中此前使用brew方式安装了nginx,则需要将其删除:

# which nginx 
/usr/local/bin/nginx
# rm -rf /usr/local/bin/nginx

如果你在意nginx安装文件占用的一些空间,还需要删除/usr/local/etc/nginx以及/usr/local/Cellar/nginx/<对应版本号> 文件夹。

然后使用以下命令安装OpenResty:

brew install openresty/brew/openresty

如果以前使用了brew安装了nginx,则还需要执行如下命令:

brew untap homebrew/nginx

此时,我们将在/usr/local/opt文件夹中发现新增了openresty文件夹。

环境变量

openresty文件夹中包括了nginx文件夹,预在全局的shell中使用nginx命令,则还需要将nginx文件夹中的sbin文件夹加入到环境变量:

# export PATH=/usr/local/opt/openresty/nginx/sbin:$PATH
# echo $PATH

若要下次启动shell时自动生效,则还需要执行如下命令:

# echo "export PATH=/usr/local/opt/openresty/nginx/sbin:$PATH" >> ~/.bash_profile

使用

此时我们便可以如往常一样使用nginx功能了。

# nginx -T
# nginx

示例

在进行nginx的配置时,可以使用echo来输出变量的值,这对调试nginx的配置文件非常重要:

    server {
        listen       6006;
        server_name  localhost;
        location / {
            # 定制content-type
            default_type text/html;
            
            # 输出当前时间
            echo $date_local;
        }
    }

则此时访问http://localhost:6006,将得到变量$date_local的值:
image.png

其它

OpenResty封装了大量的组件,同时提供一款名为OPM的组件管理器。希望有一天能用上它们。

总结

OpenResty将nginx武装的的更强大。当nginx不能很好的满足我们的新需求时,不防来OpenResty找找看。

后记:freebsd的ports为nginx提供了安装echo等第三方插件的选项。

潘杰
3.1k 声望238 粉丝