master_process on;

worker_processes 1;
worker_cpu_affinity auto;

error_log logs/error.log warn;
pid logs/nginx.pid;

worker_rlimit_nofile 20480;

events {
    accept_mutex off;
    worker_connections 10620;
}

worker_rlimit_core  500M;
working_directory   /tmp/cores/;

worker_shutdown_timeout 3;

http {
    lua_package_path  "$prefix/deps/share/lua/5.1/?.lua;$prefix/lua/?.lua;/usr/share/lua/5.1/?.lua;;";
    lua_package_cpath "$prefix/deps/lib64/lua/5.1/?.so;$prefix/deps/lib/lua/5.1/?.so;/usr/lib64/lua/5.1/?.so;;";

    lua_shared_dict plugin-limit-req 10m;
    lua_shared_dict plugin-limit-count 10m;
    lua_shared_dict plugin-limit-conn 10m;
    lua_shared_dict prometheus-metrics 10m;

    lua_ssl_verify_depth 5;
    ssl_session_timeout 86400;

    lua_socket_log_errors off;

    resolver ipv6=off local=on;
    resolver_timeout 5;

    lua_http10_buffering off;

    log_format main '$remote_addr - $remote_user [$time_local] $http_host "$request" $status $body_bytes_sent $request_time "$http_referer" "$http_user_agent" $upstream_addr $upstream_status $upstream_response_time';

    access_log logs/access.log main buffer=32768 flush=3;

    open_file_cache  max=1000 inactive=60;
    client_max_body_size 0;

    server_tokens off;
    more_set_headers 'Server: APISIX web server';

    upstream apisix_backend {
        server 0.0.0.1;
        balancer_by_lua_block {
            apisix.balancer_phase()
        }

        keepalive 32;
    }

    init_by_lua_block {
        require "resty.core"
        apisix = require("apisix")
        apisix.init()
    }

    init_worker_by_lua_block {
        apisix.init_worker()
    }

    server {
        listen 9080;

        include mime.types;

        location = /apisix/nginx_status {
            internal;
            access_log off;
            stub_status;
        }

        location /apisix/admin {
            allow 127.0.0.0/24;
            content_by_lua_block {
                apisix.admin()
            }
        }

        location / {
            set $upstream_scheme             'http';
            set $upstream_host               $host;
            set $upstream_upgrade            '';
            set $upstream_connection         '';
            set $upstream_uri                '';

            access_by_lua_block {
                apisix.access_phase()
            }

            proxy_http_version 1.1;
            proxy_set_header   Host              $upstream_host;
            proxy_set_header   Upgrade           $upstream_upgrade;
            proxy_set_header   Connection        $upstream_connection;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_pass_header  Server;
            proxy_pass_header  Date;
            proxy_pass         $upstream_scheme://apisix_backend$upstream_uri;

            header_filter_by_lua_block {
                apisix.header_filter_phase()
            }

            log_by_lua_block {
                apisix.log_phase()
            }
        }
    }
}
