openresty 概述,



openresty 概述

          

官网:http://openresty.org/cn/

         

               

                               

openresty 简介

          

openresty基于nginx、lua的web平台,整合了大量三方模块,可直接使用,不需要手动编译

# openresty 默认安装的模块
root@7bd203df440c:/usr/local/openresty/nginx# ./sbin/nginx -V
nginx version: openresty/1.19.9.1
built with OpenSSL 1.1.1l  24 Aug 2021
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx \
--with-cc-opt='-O2 -DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/zlib/include -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl111/include'  \
 
--add-module=../ngx_devel_kit-0.3.1 \
--add-module=../echo-nginx-module-0.62 \
--add-module=../xss-nginx-module-0.06 \
--add-module=../ngx_coolkit-0.2 \
--add-module=../set-misc-nginx-module-0.32 \
--add-module=../form-input-nginx-module-0.12 \
--add-module=../encrypted-session-nginx-module-0.08 \
--add-module=../srcache-nginx-module-0.32 \
--add-module=../ngx_lua-0.10.20 \
--add-module=../ngx_lua_upstream-0.07 \
--add-module=../headers-more-nginx-module-0.33 \
--add-module=../array-var-nginx-module-0.05 \
--add-module=../memc-nginx-module-0.19 \
--add-module=../redis2-nginx-module-0.15 \
--add-module=../redis-nginx-module-0.3.7 \
--add-module=../ngx_stream_lua-0.0.10 \
 
--with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib -L/usr/local/openresty/zlib/lib -L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl111/lib -Wl,-rpath,/usr/local/openresty/zlib/lib:/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl111/lib' \
 
--with-pcre-jit --with-stream \
--with-stream_ssl_module --with-stream_ssl_preread_module \
--with-http_v2_module --without-mail_pop3_module \
--without-mail_imap_module --without-mail_smtp_module \
--with-http_stub_status_module --with-http_realip_module \
--with-http_addition_module --with-http_auth_request_module \
--with-http_secure_link_module --with-http_random_index_module \
--with-http_gzip_static_module --with-http_sub_module \
--with-http_dav_module --with-http_flv_module \
--with-http_mp4_module --with-http_gunzip_module \
--with-threads --with-stream --with-http_ssl_module

           

                  

                               

配置说明

        

nginx.conf

# nginx.conf  --  docker-openresty
#
# This file is installed to:
#   `/usr/local/openresty/nginx/conf/nginx.conf` 
# and is the file loaded by nginx at startup,
# unless the user specifies otherwise.
#
# It tracks the upstream OpenResty's `nginx.conf`, but removes the `server`
# section and adds this directive:
#     `include /etc/nginx/conf.d/*.conf;`
#
# The `docker-openresty` file `nginx.vh.default.conf` is copied to
# `/etc/nginx/conf.d/default.conf`.  It contains the `server section
# of the upstream `nginx.conf`.
#
# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files
#
 
#user  nobody;
#worker_processes 1;
 
# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;
 
 
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    # Enables or disables the use of underscores in client request header fields.
    # When the use of underscores is disabled, request header fields whose names contain underscores are marked as invalid and become subject to the ignore_invalid_headers directive.
    # underscores_in_headers off;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
        # Log in JSON Format
        # log_format nginxlog_json escape=json '{ "timestamp": "$time_iso8601", '
        # '"remote_addr": "$remote_addr", '
        #  '"body_bytes_sent": $body_bytes_sent, '
        #  '"request_time": $request_time, '
        #  '"response_status": $status, '
        #  '"request": "$request", '
        #  '"request_method": "$request_method", '
        #  '"host": "$host",'
        #  '"upstream_addr": "$upstream_addr",'
        #  '"http_x_forwarded_for": "$http_x_forwarded_for",'
        #  '"http_referrer": "$http_referer", '
        #  '"http_user_agent": "$http_user_agent", '
        #  '"http_version": "$server_protocol", '
        #  '"nginx_access": true }';
        # access_log /dev/stdout nginxlog_json;
 
    # See Move default writable paths to a dedicated directory (#119)
    # https://github.com/openresty/docker-openresty/issues/119
    client_body_temp_path /var/run/openresty/nginx-client-body;
    proxy_temp_path       /var/run/openresty/nginx-proxy;
    fastcgi_temp_path     /var/run/openresty/nginx-fastcgi;
    uwsgi_temp_path       /var/run/openresty/nginx-uwsgi;
    scgi_temp_path        /var/run/openresty/nginx-scgi;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    #gzip  on;
 
    include /etc/nginx/conf.d/*.conf;
 
    # Don't reveal OpenResty version to clients.
    # server_tokens off;
}

         

default.conf

# nginx.vh.default.conf  --  docker-openresty
#
# This file is installed to:
#   `/etc/nginx/conf.d/default.conf`
#
# It tracks the `server` section of the upstream OpenResty's `nginx.conf`.
#
# This config (and any other configs in `etc/nginx/conf.d/`) is loaded by
# default by the `include` directive in `/usr/local/openresty/nginx/conf/nginx.conf`.
#
# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files
#
 
 
server {
    listen       80;
    server_name  localhost;
 
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
 
    location / {
        root   /usr/local/openresty/nginx/html;
        index  index.html index.htm;
    }
 
    location /lua {
        default_type "applictaion/json";
        content_by_lua "ngx.say('hello gtlx')";
    }
 
    #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/local/openresty/nginx/html;
    }
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           /usr/local/openresty/nginx/html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
 
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

         

main 指令

user *** ***                       # 定义运行ngin的用户、用户组

worker_processors 2                # nginx的进程数
worker_cpu_affinity auto           # nginx的cpu亲缘性
worker_rlimit_nofile  65535        # worker进程最大可打开的文件数
worker_priority       0            # worker进程优先级
worker_shutdown_timeout  30        # 30s内无法平滑关闭,强制退出

pid /var/run/nginx.pid             # 进程文件
error_log /path/error.log level    # 错误日志路径、输出级别


events {
    worker_connections  1000       # 单个进程最大连接数,
                                   # nignx总最大连接数 = 单个进程最大连接数 * worker_processors
    use epoll                      # 使用的io模型
}

           

http 指令

http {
    include       mime.types;                     # 文件拓展名、类型映射表
    default_type  application/octet-stream;       # 默认文件类型
 
    underscores_in_headers off;                   # 请求头中包含underscores是否标记为无效
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                                                  # 日志格式(名称为main)

    access_log  logs/access.log  main;            # 日志文件路径、使用的日志格式(上面定义的main格式)
 
    client_body_temp_path /var/run/openresty/nginx-client-body;  # 客户端请求临时文件保存路径
    proxy_temp_path       /var/run/openresty/nginx-proxy;        # 代理请求缓存路径
 
    gzip  on;                                     # 是否开启压缩
    sendfile        on;                           # 是否开启sendfile函数,默认开启
    tcp_nopush     on;                            # sendfile为on生效,提升网络传输效率
    server_tokens off;                            # 屏蔽版本号,默认不屏蔽
 
    keepalive_timeout  65;                        # tcp连接超时时间
  
    include /etc/nginx/conf.d/*.conf;             # 导入配置文件
}

           

server、location 指令

server {
    listen       80;            # 服务监听端口
    server_name  localhost;     # 主机名
 
    charset koi8-r;             # 编码集
    access_log  /var/log/nginx/host.access.log  main;   # 日志输出路径、输出格式
 
    location / {                                 # 请求路径,支持正则表达式
        root   /usr/local/openresty/nginx/html;  # 根目录
        index  index.html index.htm;
    }
 
    location /lua {
        default_type "applictaion/json";
        content_by_lua "ngx.say('hello gtlx')";
    }
 
    error_page  404              /404.html;      # 客户端错误重定向页面
    error_page   500 502 503 504  /50x.html;     # 服务端错误重定向页面

    location = /50x.html {
        root   /usr/local/openresty/nginx/html;
    }
 }

         

               

                               

常用模块

       

内置模块:http://openresty.org/cn/components.html

            

三方模块搜索:

                 

                 

           

常用模块说明

LuaNginxModule:集成lua,在nginx中使用lua命令
LuaRestyUploadLibrary:http文件上传

HeadersMoreNginxModule:设置请求、响应头(添加、修改、删除)

lua-resty-mysql:操作mysql数据库
lua-resty-redis:操作redis数据库

lua-resty-lrucache:nginx缓存
lua-resty-mlcache:nginx缓存

# 动态负载均衡
ngx_http_dyups_module
nginx-upsync-module
lua-resty-balancer

ngx_http_auth_request_moddule:nginx鉴权

              

                 

相关内容