user  {$OS_USER} {$OS_USER_GROUP};
worker_processes auto;
worker_cpu_affinity auto;
error_log  {$SERVER_PATH}/openresty/nginx/logs/error.log  crit;
pid        {$SERVER_PATH}/openresty/nginx/logs/nginx.pid;

worker_rlimit_nofile 65535;
pcre_jit on;

events
{
    use {$EVENT_MODEL};
    worker_connections 51200;
    multi_accept on;

    # file/video close the mutex lock when under high load
    # accept_mutex off;
}

http
{
    include  mime.types;
    
	include {$SERVER_PATH}/web_conf/nginx/lua/lua.conf;
	#include proxy.conf;

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';

    server_names_hash_bucket_size 32;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_body_buffer_size 128k;
    client_max_body_size 20m;

    # video big file opt
    #aio threads;
    #directio 4m;
    output_buffers 16 512k;
    sendfile   on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 60;

    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 60;
    fastcgi_read_timeout 60;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;
	fastcgi_intercept_errors on;

    #zstd off;
    #zstd_comp_level 6;
    #zstd_min_length 256;
    #zstd_types text/plain text/css text/xml text/javascript text/cache-manifest text/x-component text/vtt application/javascript application/json application/ld+json application/xml application/xhtml+xml application/rss+xml application/atom+xml application/manifest+json application/x-web-app-manifest+json application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/wasm font/opentype image/svg+xml image/bmp;

    #brotli off;
    #brotli_min_length 256;
    #brotli_buffers 32 8k;
    #brotli_comp_level 4;
    #brotli_window 16m;
    #brotli_static on;
    #brotli_types text/plain text/css text/xml text/javascript text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml application/atom+xml application/vnd.ms-fontobject application/x-font-ttf application/x-font-opentype application/x-font-truetype font/tpl font/opentype font/otf font/ttf image/svg+xml image/x-icon image/vnd.microsoft.icon application/wasm application/manifest+json;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 9;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";


    limit_conn_zone $binary_remote_addr zone=perip:10m;
	limit_conn_zone $server_name zone=perserver:10m;

    # CACEH_BEGIN
    proxy_buffering on;
    proxy_buffer_size 1024k;
    proxy_buffers 16 1024k;
    proxy_busy_buffers_size 2048k;
    proxy_temp_file_write_size 2048k;
    proxy_cache_path {$SERVER_PATH}/openresty/nginx/proxy_cache_temp levels=1:2 keys_zone=mw_cache:512m inactive=5m max_size=2g use_temp_path=off;
    #proxy timeout
    proxy_connect_timeout 3s;
    proxy_read_timeout 5s;
    proxy_send_timeout 5s;

    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_path {$SERVER_PATH}/openresty/nginx/fastcgi_cache_temp levels=1:2 keys_zone=mw_cache_fcgi:100m inactive=60m max_size=5g;
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
    # CACEH_END

    server_tokens off;
    access_log /dev/null;
    more_set_headers "Server: mdserver-web";
    
    include {$SERVER_PATH}/web_conf/nginx/vhost/*.conf;
}

