美文网首页
双层nginx 架构安装部署

双层nginx 架构安装部署

作者: sknfie | 来源:发表于2020-09-12 19:10 被阅读0次

概述

部署的双层nginx架构需要自定义一些特殊的业务逻辑:

  • 流量分发需要用 lua 去写分发的逻辑,在分发层 nginx 里去写的;
  • 多级缓存架构存取的控制逻辑也需要用lua,在应用层 nginx 里去写的;
  • 还有做热点数据的自动降级机制,也是用 lua 脚本去写降级机制的,在分发层 nginx 里去写的;

因为我们要用 nginx+lua 去开发,所以会选择用最流行的开源方案OpenResty:
nginx+lua 打包在一起,而且提供了包括 redis 客户端,mysql 客户端,http 客户端在内的大量的组件。

安装步骤

1.上传安装包

将下面的安装包上传到服务器上

nginx_upstream_check_module-0.3.0.tar.gz
ngx_cache_purge-2.3.tar.gz
ngx_openresty-1.7.7.2.tar.gz

2.部署openresty

//安装编译黄金
yum install -y readline-devel pcre-devel openssl-devel gcc

//上传的安装包放到这个目录下
mkdir -p /usr/servers  
cd /usr/servers/

tar -xzvf ngx_openresty-1.7.7.2.tar.gz  
cd /usr/servers/ngx_openresty-1.7.7.2/

cd bundle/LuaJIT-2.1-20150120/  
make clean && make && make install  
ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit

[root@dlsc-201-33 bundle]# cd ..
//将其他两个安装包放到这里
[root@dlsc-201-33 ngx_openresty-1.7.7.2]# mv *.tar.gz ngx_openresty-1.7.7.2/bundle/
//将其他两个安装包解压
tar -xvf ngx_cache_purge-2.3.tar.gz
tar -xvf nginx_upstream_check_module-0.3.0.tar.gz
[root@dlsc-201-33 ngx_openresty-1.7.7.2]# ./configure --prefix=/usr/servers --with-http_realip_module  --with-pcre  --with-luajit --add-module=./bundle/ngx_cache_purge-2.3/ --add-module=./bundle/nginx_upstream_check_module-0.3.0/ -j2  

[root@dlsc-201-33 ngx_openresty-1.7.7.2]# make && make install 

[root@dlsc-201-33 ngx_openresty-1.7.7.2]# cd ..
[root@dlsc-201-33 servers]# ll
总用量 0

drwxr-xr-x 2 root  root  19 9月  12 18:16 bin
drwxr-xr-x 6 root  root  56 9月  12 18:16 luajit
drwxr-xr-x 5 root  root  59 9月  12 18:16 lualib
drwxr-xr-x 6 root  root  54 9月  12 18:16 nginx
drwxrwxr-x 4 admin admin 89 9月  12 17:58 ngx_openresty-1.7.7.2

//查看nginx版本
[root@dlsc-201-33 servers]# /usr/servers/nginx/sbin/nginx -V 
nginx version: openresty/1.7.7.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/servers/nginx --with-cc-opt='-I/usr/servers/ngx_openresty-1.7.7.2/build/luajit-root/usr/servers/luajit/include/luajit-2.1 -O2' --add-module=../ngx_devel_kit-0.2.19 --add-module=../echo-nginx-module-0.57 --add-module=../xss-nginx-module-0.04 --add-module=../ngx_coolkit-0.2rc2 --add-module=../set-misc-nginx-module-0.28 --add-module=../form-input-nginx-module-0.10 --add-module=../encrypted-session-nginx-module-0.03 --add-module=../srcache-nginx-module-0.28 --add-module=../ngx_lua-0.9.14 --add-module=../ngx_lua_upstream-0.02 --add-module=../headers-more-nginx-module-0.25 --add-module=../array-var-nginx-module-0.03 --add-module=../memc-nginx-module-0.15 --add-module=../redis2-nginx-module-0.11 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.13 --add-module=../rds-csv-nginx-module-0.05 --with-ld-opt='-Wl,-rpath,/usr/servers/luajit/lib -L/usr/servers/ngx_openresty-1.7.7.2/build/luajit-root/usr/servers/luajit/lib' --with-http_realip_module --with-pcre --add-module=/usr/servers/ngx_openresty-1.7.7.2/bundle/ngx_cache_purge-2.3 --add-module=/usr/servers/ngx_openresty-1.7.7.2/bundle/nginx_upstream_check_module-0.3.0 --with-http_ssl_module

//启动nginx
[root@dlsc-201-33 servers]# /usr/servers/nginx/sbin/nginx 

3.配置

打开nginx配置文件,在http部分添加lua包,并把下面的lua.conf配置也加进来:

vi /usr/servers/nginx/conf/nginx.conf

lua_package_path "/usr/servers/lualib/?.lua;;";  
lua_package_cpath "/usr/servers/lualib/?.so;;";  
include lua.conf;

在/usr/servers/nginx/conf下,创建一个lua.conf

vi /usr/servers/nginx/conf/lua.conf

server {  
    listen       80;  
    server_name  _;  

    location /lua {  
        default_type 'text/html';  
        content_by_lua 'ngx.say("hello world")';  //访问lua路径,返回hello world
    } 
}  

4.测试

验证配置是否正确:

[root@dlsc-201-33 servers]# nginx/sbin/nginx -s reload //重新加载配置

[root@dlsc-201-33 servers]# /usr/servers/nginx/sbin/nginx -t
nginx: the configuration file /usr/servers/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/servers/nginx/conf/nginx.conf test is successful

访问测试结果:

[root@dlsc-201-33 nginx]# curl http://192.168.201.33/lua
hello world

在conf下面创建目录并修改配置文件:

[root@dlsc-201-33 conf]# mkdir lua

vi lua/test.lua
ngx.say("hello world, test"); 

location /lua {  
    default_type 'text/html';  
    content_by_lua_file conf/lua/test.lua; 
}

[root@dlsc-201-33 nginx]# sbin/nginx -s reload
[root@dlsc-201-33 nginx]# curl http://192.168.201.33/lua
hello world, test

//查看日志
tail -f /usr/servers/nginx/logs/error.log

5. 工程化的nginx+lua项目结构

项目工程结构:

hello
    hello.conf     
    lua              
      hello.lua
    lualib            
      *.lua
      *.so

创建hello.conf文件:

[root@dlsc-201-33 hello]# vi hello.conf
server {
    listen       80;
    server_name  _;

    location /hello{
        default_type 'text/html';
        content_by_lua_file /usr/hello/lua/hello.lua;
    }  
} 

创建lua目录和hello.lua文件:

[root@dlsc-201-33 hello]# mkdir lua
[root@dlsc-201-33 hello]# vi lua/hello.lua
ngx.say("hello lua");

修改nginx配置文件(将http下面的配置改成):

[root@dlsc-201-33 hello]# vi /usr/servers/nginx/conf/nginx.conf
http {
    lua_package_path "/usr/hello/lualib/?.lua;;";
    lua_package_cpath "/usr/hello/lualib/?.so;;";
    include /usr/hello/hello.conf;
    ......
}

拷贝lualib:

[root@dlsc-201-33 servers]# cp lualib/ ../hello/ -r

测试:

[root@dlsc-201-33 nginx]# sbin/nginx -s reload

[root@dlsc-201-33 nginx]# sbin/nginx -t
nginx: the configuration file /usr/servers/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/servers/nginx/conf/nginx.conf test is successful

[root@dlsc-201-33 nginx]# curl http://192.168.201.33/hello
hello lua

相关文章

网友评论

      本文标题:双层nginx 架构安装部署

      本文链接:https://www.haomeiwen.com/subject/yjnwektx.html