【问题标题】:Unknown directive "init_by_lua_block" in /etc/nginx/nginx.conf/etc/nginx/nginx.conf 中的未知指令“init_by_lua_block”
【发布时间】:2020-03-30 10:18:33
【问题描述】:

我正在使用 AWS EC2 ubuntu 18.04 实例来设置反向代理服务器,以实现 Web 应用程序的白标概念。

我安装了nginxopenrestylua

以下是各自的版本:

nginx version: nginx/1.14.0 (Ubuntu)
nginx version: openresty/1.15.8.2
Lua: 5.1.5 

我在 nginx 中创建正确的配置文件时遇到问题

这是我的nginx.conf文件代码:

user  ubuntu www;
events {
    worker_connections 1024;
}

http {
    lua_shared_dict auto_ssl 1m;
    lua_shared_dict auto_ssl_settings 64k;
    resolver 8.8.8.8 ipv6=off;

    init_by_lua_block {
        auto_ssl = (require "resty.auto-ssl").new()
        auto_ssl:set("allow_domain", function(domain)
           return true
        end)
        auto_ssl:init()
    }

    init_worker_by_lua_block {
        auto_ssl:init_worker()
    }

    server {
        listen 443 ssl;
        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;

        proxy_ssl_server_name on;
        location / {
            proxy_set_header Host app.mydomain.com;
            proxy_set_header Referer $host$uri;
            proxy_buffer_size          128k;
            proxy_buffers              4 256k;
            proxy_busy_buffers_size    256k;

            proxy_set_header User-Agent $http_user_agent;
            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header Accept-Encoding "";
            proxy_set_header Accept-Language $http_accept_language;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto  https;
            proxy_read_timeout 5m;

            proxy_pass https://app.mydomain.com;
        } 
    }

    server {
        listen 80;
        location /.well-known/acme-challenge/ {
            content_by_lua_block {
                auto_ssl:challenge_server()
            }
        }

        location / {
           return 301 https://$host$request_uri;
        }
    }

    server {
        listen 127.0.0.1:8999;
        client_body_buffer_size 128k;
        client_max_body_size 128k;

        location / {
            content_by_lua_block {
                auto_ssl:hook_server()
            }
        }
    }
}

当我重新启动 nginx 服务时,我收到以下错误:

unknown directive "init_by_lua_block" in /etc/nginx/nginx.conf

【问题讨论】:

    标签: nginx lua openresty


    【解决方案1】:

    最后,我了解到我必须使用openresty 而不是nginx 来启动服务器。

    所以我运行了以下命令并且它起作用了:

    sudo systemctl start openresty.service
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的错误,同样的问题。在 ubuntu 18.04 上它工作:

      1. 通过apt安装nginx lua模块(这也会安装libnginx-mod-http-ndk):
      sudo apt install libnginx-mod-http-lua
      
      1. nginx.conf 文件的顶部添加加载模块的指令:
      load_module modules/ndk_http_module.so;
      load_module modules/ngx_http_lua_module.so;
      
      1. 添加lua代码块后(如官方Quick Start Guide所示),请确保以下行的路径正确:
      lua_package_path "/path/to/nginx-lua-prometheus/?.lua;;";
      

      目录nginx-lua-prometheus 是您必须克隆的目录:https://github.com/knyar/nginx-lua-prometheus

      【讨论】:

        猜你喜欢
        • 2021-10-27
        • 2021-08-30
        • 2017-07-24
        • 2011-07-15
        • 2020-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多