zoukankan      html  css  js  c++  java
  • openresty配置

    openresty配置的一些问题总结!

    环境

    • win10下的linux子系统ubuntu(wsl)

    • openresty版本:ngx_openresty-1.7.7.2.tar.gz

    wsl安装

    请移步 {% post_link wsl笔记 %}

    openresty安装

    请参考安装OpenResty(Nginx+Lua)开发环境

    或者参考 {% post_link openresty安装笔记 %}

    openssl版本问题

    需要指定旧版本,推荐在编译 Nginx 时指定 OpenSSL 源码目录,而不是使用系统自带的版本,这样更可控。

    参考openssl版本问题

    Lua模块安装

    1. 安装 LuaRocks

      LuaRocks: Lua 的模块安装和部署工具

      apt-get install luarocks
      
    2. 安装 luasocket

      lua 远程调试引入的 require("mobdebug").start() 需要 socket

      :Lua 的 Remote Debug 远程调试 现在还搞不定,此处占个坑。

      luarocks install luasocket
      

    openresty使用

    nginx常用命令

    1. 启动:

      指定配置文件

      nginx -p `pwd`/ -c conf/nginx.conf
      
    2. 停止:

      nginx指定配置文件的,停止时也需指定参数

      nginx -p `pwd`/ -c conf/nginx.conf -s quit
      

    nginx.conf 配置

    • 正则匹配路径

      模式 含义
      location = /uri = 表示精确匹配,只有完全匹配上才能生效
      location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。
      location ~ pattern 开头表示区分大小写的正则匹配
      location ~* pattern 开头表示不区分大小写的正则匹配
      location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后
      location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default
      location ~ ^/api/([-_a-zA-Z0-9]+) {
          # 准入阶段完成参数验证
          access_by_lua_file  nginx_test_server/access_check.lua;
      
          #内容生成阶段
          content_by_lua_file nginx_test_server/$1.lua;
      }
      
    • 开发调试时取消缓存

      # 这里设置为 off,是为了避免每次修改之后都要重新 reload 的麻烦。
      # 在生产环境上务必确保 lua_code_cache 设置成 on。
      lua_code_cache off;
      
    • http 模块 报错 bad argument #2 to 'set_keepalive' (number expected, got nil)

      参考:bad argument #2 to 'set_keepalive' (number expected, got nil)的解决办法

      在关联数组中多传一个参数keepalive=false 即

      {
      method = “GET”,
      path = requestBody,
      keepalive=false
      }
      

    lua 的一些坑

    • openresty/lua-resty-redis 的 批量查询 返回值问题

      参考:nil、null与ngx.null

      官方说明

      A non-nil Redis "bulk reply" results in a Lua string as the return value. A nil bulk reply results in a ngx.null return value.

      A nil multi-bulk reply returns in a ngx.null value.

      如果使用批量查询如mget,查不到数据会返回 ngx.null

    OpenResty缓存

    需要先在 nginx.conf 里面的修改 ,这个 cache 是 Nginx 所有 worker 之间共享的

    lua_shared_dict my_cache 128m;
    
  • 相关阅读:
    jQuery before 和 after
    pm2常用的命令
    git 常见命令
    Number 和 parseInt 区别
    枚举创建单例模式 安全 而且利用反射也读不到
    spring 的数据库工具类 JDBCTemplate
    阿里druid数据库连接及配置文件
    java C3P0连接数据库
    JDBC利用.properties文件连接数据库
    JDBC工具类的使用
  • 原文地址:https://www.cnblogs.com/jarvankuo/p/11955047.html
Copyright © 2011-2022 走看看