ciaoℒy
安装Openresty替换Nginx

access_time
brush 401个字
whatshot 44 ℃
百度收录:百度已收录

安装

按照官网教程, Ubuntu Server可以使用PPA源安装

OpenResty Linux Packages

配置

使用apt安装之后, 官方dpk会建立一个软链接/etc/openresty指向/usr/local/openresty/nginx/conf. 可以把原来的Nginx配置文件移动到这里, 当然可能还需要修改亿点点东西.

[可选]在conf.d/下新建init.conf, 添加如下内容:

#lua_package_path "/usr/local/openresty/site/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file  /usr/local/openresty/site/init.lua;
access_by_lua_file /usr/local/openresty/site/access.lua;

如此一些需要全局作用域内运行的lua模块即可在init.luaaccess.lua中统一引用了.

安装luarocks

OPM还是缺点意思的啦, 安装luarocks参照官网教程执行即可.

OpenResty - Using LuaRocks

替代certbot

之前一直使用的certbot更新Nginx证书, 但是certbot的Nginx插件并不兼容Openresty, 结合Openresty的lua特性, 索性直接让Openresty自动获取证书不就好了?

安装lua-resty-auto-ssl

lua-resty-auto-ssl为例, 由于luarocks安装的lua-resty-auto-ssl版本(0.13.1)太低, 需要自己编译安装.

首先用命令luarocks pathluarocks --verbose查看当前luaresty的目录情况, 据此导出以下四个变量:

#导出LUA_CPATH和LUA_PATH
eval `luarocks path`
#对应luarocks --verbose中的LUA_BINDIR
export INST_BINDIR=/usr/local/openresty/luajit/bin
#resty.core所在的目录
export INST_LUADIR=/usr/local/openresty/lualib

之后执行编译安装:

make & sudo make install

需要注意的是, 截至本文撰写时, 原始仓库里面的Makefile不会自动安装util/has_certificate.lua, 需要自行修改Makefile(或者拉我的仓库也行).

配置lua-resty-auto-ssl

  1. 按照项目Readme中的步骤, 首先创建必要的目录:
#使用编译安装而不是luarocks安装
#sudo luarocks install lua-resty-auto-ssl
sudo mkdir /etc/resty-auto-ssl
sudo chown www-data /etc/resty-auto-ssl
  1. /etc/openresty/conf.d中新建auto_ssl_init.conf, 添加如下内容:
#auto_ssl_init.conf
lua_shared_dict auto_ssl 1m;
lua_shared_dict auto_ssl_settings 64k;
resolver 223.5.5.5 ipv6=off;

init_worker_by_lua_block {
    auto_ssl:init_worker()
}

 # Internal server running on port 8999 for handling certificate tasks.
server {
    listen 127.0.0.1:8888;
    # Increase the body buffer size, to ensure the internal POSTs can always
    # parse the full POST contents into memory.
    client_body_buffer_size 128k;
    client_max_body_size 128k;
    location / {
        content_by_lua_block {
            auto_ssl:hook_server()
        }
    }
}
  1. /etc/openresty/sites-enabled/default里的HTTP Server里添加以下location和重定向代码块, 用来实现challenge和302自动跳转
# Endpoint used for performing domain verification with Let's Encrypt.
location /.well-known/acme-challenge/ {
    content_by_lua_block {
        auto_ssl:challenge_server()
    }
}

rewrite_by_lua_block {
    local has_cert = auto_ssl:has_certificate(ngx.var.host)
    if has_cert then
        local https_uri = "https://" .. ngx.var.host .. ngx.var.request_uri
        ngx.redirect(https_uri, 302)
    end
}

4.在/etc/openresty下新建auto_ssl.conf, 内容如下:

#auto_ssl.conf
ssl_certificate_by_lua_block {
    auto_ssl:ssl_certificate()
}
ssl_certificate /etc/ssl/resty-auto-ssl-fallback.crt;
ssl_certificate_key /etc/ssl/resty-auto-ssl-fallback.key;
  1. /usr/local/openresty/site/lualib/中新建auto_ssl.lua, 用于初始化lua-resty-auto-ssl模块:
--auto_ssl.lua
auto_ssl = (require "resty.auto-ssl").new()
auto_ssl:set("allow_domain", function(domain)
    return true
end)
auto_ssl:set("hook_server_port", 8888)
auto_ssl:init()
  1. /usr/local/openresty/site/init.lua中加载auto_ssl.lua以使其生效:
--init.lua
require "auto_ssl"
  1. 在需要配置ssl的vhost里引用auto_ssl.conf即可:
server {
    server_name _;
    listen 443 ssl;
    include auto_ssl.conf;
}

安装waf

基本上安装waf就是在/usr/local/openresty/site/access.lua中调用waf的入口代码, 就不写了.

Refer: How to Install ModSecurity for Nginx on Debian/Ubuntu

#如无特别声明,该文章均为 ciaoℒy 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
#最后编辑时间为: 2022 年 11 月 16 日


create 添加新评论


account_circle
email
language
textsms


assessment 仅有一条评论
  1. Guest🕵️
    2022-11-17 23:57

    试试评论能不能用啊👀






关于 DreamCat

主题名称:DreamCat | 版本:2.8.221001(LTS)

主题开发:HanFengA7 | TeddyNight | Dev-Leo | CornWorld | WhiteBearcn | DFFZMXJ

Designed by HanFengA7 Power by Typecho

Copyright © 2015-2022 by LychApe All rights reserved!

加我的QQ
加我的微博
加我的支付宝
加我的微信