我在redhat 7.5服务器上安装了nginx 1.12,它也有LUA 5.1.4 我下载了lua-nginx-module-0.10.13 tar ball并将其放在/ etc / nginx / modules下,但我无法使用LUA auth文件运行nginx。
我在/ opt / openresty / ..
下也有开放态度http://openresty.org/en/installation.html 我跟着" make"这里的方法。
不幸的是,这台服务器无法访问互联网,所以我无法从git安装东西,这大大减慢了这一点。我不知道如何在这里添加模块。任何评论都会有所帮助。
这是我的nginx配置的样子..
server
{
listen 80;
access_log /opt/elk/logs/nginx/access.log main;
#auth_basic "admin";
#auth_basic_user_file "/etc/nginx/passwd";
client_max_body_size 100M;
location /
{
proxy_pass http://127.0.0.1:9200;
keepalive_timeout 300s;
#auth_basic on;
auth_basic "admin";
auth_basic_user_file "/etc/nginx/passwd";
access_by_lua_file '/etc/nginx/authorized.lua';
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html
{
root /usr/share/nginx/html;
}
}
lua_access_file导致错误
nginx:[emerg] unknown directive" access_by_lua_file"是否有一些"包括"我需要在配置中定义以摆脱这个?
感谢。
答案 0 :(得分:5)
根据问题和我的理解,我将您的问题分解为小任务。
1)该错误明确表明您没有正确安装Lua-nginx-module。
Lua-nginx-module documentation
2)服务器无法访问Internet,因此无法从git下载。 *
假定您正在从Windows将ssh插入计算机。所以,请 检查以下链接,将文件从Windows复制到Linux。
此步骤将在服务器上获取所有必需的文件。
3)使用lua-nginx-module安装nginx的步骤。
lua nginx模块兼容性检查。
Nginx Compatibility
The latest version of this module is compatible with the following versions of Nginx:
1.13.x (last tested: 1.13.6)
1.12.x
1.11.x (last tested: 1.11.2)
1.10.x
1.9.x (last tested: 1.9.15)
1.8.x
1.7.x (last tested: 1.7.10)
1.6.x
Nginx cores older than 1.6.0 (exclusive) are not supported.
先决条件
-Centos / RHEL [如果您的服务器上存在Internet连接]。
yum install -y wget unzip gcc make openssl-devel pcre-devel zlib-devel
-手动下载.rpm软件包并进行安装。
从RPM资源站点搜索先决条件
将文件复制到Linux框中
使用以下命令进行安装。
rpm -i rpm-package-name
-安装必备的Tarball。
下载源文件
$ cd /tmp/nginx-build
$ wget http://nginx.org/download/nginx-1.13.0.tar.gz
$ wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
$ wget -O nginx_devel_kit.tar.gz https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
$ wget -O nginx_lua_module.tar.gz https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz
提取
$ tar xvf LuaJIT-2.0.4.tar.gz
$ tar xvf nginx-1.11.10.tar.gz
$ tar xvf nginx_devel_kit.tar.gz
$ tar xvf nginx_lua_module.tar.gz
构建LuaJIT
要使用LuaJIT构建Nginx,我们需要首先构建LuaJIT。这就像make命令一样简单
$ cd /tmp/nginx-build/LuaJIT-2.0.4
$ make install
==== Building LuaJIT 2.0.4 ====
make -C src
make[1]: Entering directory `/tmp/nginx/LuaJIT-2.0.4/src'
...
...
ln -sf luajit-2.0.4 /usr/local/bin/luajit
==== Successfully installed LuaJIT 2.0.4 to /usr/local ====
正在构建Nginx
$ cd /tmp/nginx-build/nginx-1.11.10
$ LUAJIT_LIB=/usr/local/lib LUAJIT_INC=/usr/local/include/luajit-2.0 \
./configure \
--user=nobody \
--group=nobody \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-pcre \
--with-file-aio \
--with-http_realip_module \
--without-http_scgi_module \
--without-http_uwsgi_module \
--without-http_fastcgi_module ${NGINX_DEBUG:+--debug} \
--with-cc-opt=-O2 --with-ld-opt='-Wl,-rpath,/usr/local/lib' \
--add-module=/tmp/nginx/ngx_devel_kit-0.3.0 \
--add-module=/tmp/nginx/lua-nginx-module-0.10.8
$ make install
Syntanx Check
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginx Lua测试
*根据您的nginx文件。
location /
{
proxy_pass http://127.0.0.1:9200;
keepalive_timeout 300s;
#auth_basic on;
auth_basic "admin";
auth_basic_user_file "/etc/nginx/passwd";
access_by_lua_file '/etc/nginx/authorized.lua'; }
重新加载/重新启动Nginx
systemctl nginx restart
systemctl nginx reload.
答案 1 :(得分:2)
如果您使用 docker 运行 nginx,您只需关注 instructions github 存储库上的 docker-nginx。
在您的 nginx-conf
中确保还通过添加来加载模块
load_module modules/ndk_http_module.so;
load_module modules/ngx_http_lua_module.so;
load_module modules/ngx_stream_lua_module.so;
答案 2 :(得分:1)
Akshay Barahate的回答是漫长而全面的。 但是要回答你的问题
是否需要在配置中定义一些“包含”来消除此问题?
尝试添加
load_module "ngx_http_lua_module.so"
软件包名称可能有所不同,以上文件名来自软件包的ubuntu 18.04安装。 (通常,您可以在/ usr / share / nginx / modules中找到您的模块)
注意:如果从源代码编译nginx(这似乎是使lua运行的推荐方法),则路径和文件名可能会有所不同。
快乐鳕鱼。