Join the community today
Become a Member

Nginx Angie is an efficient, powerful, and scalable web server that was forked from nginx

Discussion in 'Nginx and PHP-FPM news & discussions' started by rdan, Jan 3, 2024.

Tags:
  1. rdan

    rdan Well-Known Member

    5,434
    1,395
    113
    May 25, 2014
    Ratings:
    +2,181
    Local Time:
    7:49 AM
    Mainline
    10.2
    Angie is an efficient, powerful, and scalable web server that was forked from nginx:
    • Conceived by ex-devs from the original team to venture beyond the earlier vision and act as a drop-in replacement without major changes to module setup or configuration.
    • Includes all capabilities of nginx 1.25.3 and a number of new features.
    https://angie.software/en/

     
  2. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    Yeah know about angie for a while. Interesting. Tried a quick Centmin Mod 130.00beta01 with modified code for angie and also works - optional Nginx njs module doesn't work though

    Code (Text):
    nginx -t
    angie: [emerg] dlopen() "/usr/local/angie/modules/ngx_stream_js_module.so" failed (/usr/local/angie/modules/ngx_stream_js_module.so: cannot open shared object file: No such file or directory) in /usr/local/nginx/conf/dynamic-modules.conf:11
    angie: configuration file /usr/local/nginx/conf/nginx.conf test failed
    

    Code (Text):
    dynamic modules include file /usr/local/nginx/conf/dynamic-modules.conf
    -rw-r--r-- 1 root root 659 Jan  3 04:18 /usr/local/nginx/conf/dynamic-modules.conf
    
    # place custom load_module lines in this dynamic-modules-includes.conf
    # file so that they persistent i.e. for manually dropped in dynamic modules
    include /usr/local/nginx/conf/dynamic-modules-includes.conf;
    load_module "modules/ngx_http_image_filter_module.so";
    load_module "modules/ngx_http_headers_more_filter_module.so";
    load_module "modules/ndk_http_module.so";
    load_module "modules/ngx_http_set_misc_module.so";
    load_module "modules/ngx_http_echo_module.so";
    load_module "modules/ngx_http_fancyindex_module.so";
    load_module "modules/ngx_http_js_module.so";
    load_module "modules/ngx_stream_js_module.so";
    load_module "modules/ngx_http_geoip2_module.so";
    
    dynamic module directory at /usr/local/nginx/modules
    total 14M
    drwxr-xr-x  2 root root 4.0K Jan  3 04:18 .
    drwxr-xr-x 11 root root  156 Nov 23 13:38 ..
    -rwxr-xr-x  1 root root 106K Dec  7 10:53 ndk_http_module.so
    -rwxr-xr-x  1 root root 523K Dec  7 10:53 ngx_http_echo_module.so
    -rwxr-xr-x  1 root root 125K Dec  7 10:53 ngx_http_fancyindex_module.so
    -rwxr-xr-x  1 root root  98K Dec  7 10:53 ngx_http_geoip2_module.so
    -rwxr-xr-x  1 root root 235K Dec  7 10:53 ngx_http_headers_more_filter_module.so
    -rwxr-xr-x  1 root root 129K Dec  7 10:53 ngx_http_image_filter_module.so
    -rwxr-xr-x  1 root root 6.0M Dec  7 10:53 ngx_http_js_module.so
    -rwxr-xr-x  1 root root 615K Dec  7 10:53 ngx_http_set_misc_module.so
    -rwxr-xr-x  1 root root  71K Dec  7 10:53 ngx_stream_geoip2_module.so
    -rwxr-xr-x  1 root root 5.9M Dec  7 10:53 ngx_stream_js_module.so
    
    

    looks like nginx modules are dated for older Dec 7 build, so probably needs more work. Some reason Angie nginx modules never left their source directory builds
    Code (Text):
    ls -lAhrt /svr-setup/nginx-angie/objs | grep .so
    -rwxr-xr-x  1 root root 131K Jan  3 04:19 ngx_http_image_filter_module.so
    -rwxr-xr-x  1 root root  99K Jan  3 04:19 ngx_http_geoip2_module.so
    -rwxr-xr-x  1 root root 127K Jan  3 04:19 ngx_http_fancyindex_module.so
    -rwxr-xr-x  1 root root 107K Jan  3 04:19 ndk_http_module.so
    -rwxr-xr-x  1 root root 630K Jan  3 04:19 ngx_http_set_misc_module.so
    -rwxr-xr-x  1 root root 533K Jan  3 04:19 ngx_http_echo_module.so
    -rwxr-xr-x  1 root root 6.0M Jan  3 04:19 ngx_http_js_module.so
    -rwxr-xr-x  1 root root 239K Jan  3 04:19 ngx_http_headers_more_filter_module.so
    


    The extent of my testing :)
     
  3. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    Looks like that njs nginx module which has 2 modules only has 1 module when built with angie instead of nginx so adjustments need to be made
    Code (Text):
    nginx -t
    angie: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    angie: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    

     
  4. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
  5. rdan

    rdan Well-Known Member

    5,434
    1,395
    113
    May 25, 2014
    Ratings:
    +2,181
    Local Time:
    7:49 AM
    Mainline
    10.2
    From their change logs:
    https://angie.software/en/oss_changes/

    It looks like the changes are more targeted towards large-scale deployment and not much of an improvement for single-server setups like most of us here are doing.
     
  6. buik

    buik “The best traveler is one without a camera.”

    1,962
    513
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,632
    Local Time:
    1:49 AM
    Angie is more of a replacement option for NGINX Plus, through there 'wbsrv' consulting firm.
    There is absolutely no need to use Angie, unless you have multiple large clusters and want to buy support from a non Nginx and F5 based company. Or need to use Tongsuo SSL (formerly BabaSSL). For example, because of applicable laws.

    But the latter doesn't quite hold true either. Should Tongsuo be a requirement, I would always choose Tengine. Developed by the same company and also such stress tested together. And as the same goes for Angie. Tengine is in fact Nginx with add-ons.
     
  7. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    Indeed, I see those directives for upstream features. Interesting to see how Angie develops with more Nginx Plus like features. I asked them if Angie would support OpenSSL 3.2's TLS certificate compression and they say it might be enabled by default Leveraging OpenSSL 3.2 TLS certificate compression? · Issue #63 · webserver-llc/angie but not entirely sure.

    Looks like there's no ABI compatlity guarantees for Angie and dynamic nginx modules with Nginx NGINX ABI compatibility · Issue #13 · webserver-llc/angie. Not a problem with Centmin Mod as dynamic Nginx modules are usually recompiled. Which means Nginx dynamic modules built for Nginx may not work with Angie. But Nginx dynamic modules built for Angie will work fine for Angie.
    I added Angie to one of my Centmin Mod 130.00beta01 EL8 automated workflow tests for h2load HTTP/2 benchmark tests comparing various combinations of Centmin Mod Nginx built binaries pairing them with various crypto libraries like OpenSSL 1.1.1w, OpenSSL 3.0.12, OpenSSL 3.1.4, OpenSSL 3.2.0, quic-TLS OpenSSL 1.1.1w, BoringSSL, and BoringSSL with Cloudflare Post-Quantum Key Exchange Agreements using X25519Kyber768Draft00 and below is the result :)

    The automated workflow Nginx subtests for AlmaLinux 8 vs Rocky Linux 8 vs Oracle Linux 8

    angie-workflow-subtests-h2load-tests-01.png angie-workflow-subtests-h2load-tests-02.png

    Not seeing much difference for OpenSSL 3.2.0 if it had TLS certificate compression enabled by default as claimed by Angie developer in Leveraging OpenSSL 3.2 TLS certificate compression? · Issue #63 · webserver-llc/angie

    angie-workflow-h2load-tests-01.png

    Nginx HTTPS h2load OpenSSL default benchmarks test


    Code (Text):
    Nginx HTTPS h2load OpenSSL default benchmarks test
    nginx version: nginx/1.25.3 (030124-064356-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 1.1.1w  11 Sep 2023
    {
      "time": "640.01ms",
      "req_per_sec": "7812.39",
      "mbs": "16.88MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "19.86",
      "req_max": "440.14",
      "req_mean": "242.05",
      "req_sd": "109.14ms",
      "req_sd_pct": "61.94%",
      "conn_min": "6.93",
      "conn_max": "244.92",
      "conn_mean": "86.97",
      "conn_sd": "92.30ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "30.94",
      "first_byte_max": "626.60",
      "first_byte_mean": "323.40",
      "first_byte_sd": "175.43ms",
      "first_byte_sd_pct": "57.00%",
      "req_s_min": "78.52",
      "req_s_max": "1594.42",
      "req_s_mean": "255.21",
      "req_s_sd": "280.73",
      "req_s_sd_pct": "280.73",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx angie branch HTTPS h2load OpenSSL default benchmarks test


    Code (Text):
    Nginx angie branch HTTPS h2load OpenSSL default benchmarks test
    Angie version: Angie/1.4.0 (030124-064742-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 1.1.1w  11 Sep 2023
    {
      "time": "660.52ms",
      "req_per_sec": "7569.78",
      "mbs": "16.36MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "33.16",
      "req_max": "378.76",
      "req_mean": "196.35",
      "req_sd": "93.82ms",
      "req_sd_pct": "60.06%",
      "conn_min": "11.31",
      "conn_max": "379.44",
      "conn_mean": "127.56",
      "conn_sd": "137.25ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "50.46",
      "first_byte_max": "644.32",
      "first_byte_mean": "318.54",
      "first_byte_sd": "175.22ms",
      "first_byte_sd_pct": "58.00%",
      "req_s_min": "76.20",
      "req_s_max": "976.51",
      "req_s_mean": "248.19",
      "req_s_sd": "227.13",
      "req_s_sd_pct": "227.13",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx master branch HTTPS h2load OpenSSL default benchmarks test


    Code (Text):
    Nginx master branch HTTPS h2load OpenSSL default benchmarks test
    nginx version: nginx/1.25.4 (030124-064935-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 1.1.1w  11 Sep 2023
    {
      "time": "664.18ms",
      "req_per_sec": "7528.10",
      "mbs": "16.27MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "33.73",
      "req_max": "395.07",
      "req_mean": "181.27",
      "req_sd": "97.70ms",
      "req_sd_pct": "62.08%",
      "conn_min": "11.27",
      "conn_max": "392.80",
      "conn_mean": "157.44",
      "conn_sd": "171.08ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "50.27",
      "first_byte_max": "648.45",
      "first_byte_mean": "332.92",
      "first_byte_sd": "184.09ms",
      "first_byte_sd_pct": "57.00%",
      "req_s_min": "75.68",
      "req_s_max": "981.36",
      "req_s_mean": "243.12",
      "req_s_sd": "229.09",
      "req_s_sd_pct": "229.09",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx HTTPS h2load OpenSSL 3.0 default benchmarks test


    Code (Text):
    Nginx HTTPS h2load OpenSSL 3.0 default benchmarks test
    nginx version: nginx/1.25.3 (030124-065522-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.0.12 24 Oct 2023
    {
      "time": "638.91ms",
      "req_per_sec": "7825.85",
      "mbs": "16.91MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "32.74",
      "req_max": "368.97",
      "req_mean": "200.19",
      "req_sd": "91.47ms",
      "req_sd_pct": "61.82%",
      "conn_min": "11.52",
      "conn_max": "322.12",
      "conn_mean": "128.78",
      "conn_sd": "131.51ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "50.08",
      "first_byte_max": "623.70",
      "first_byte_mean": "323.52",
      "first_byte_sd": "177.50ms",
      "first_byte_sd_pct": "57.00%",
      "req_s_min": "78.72",
      "req_s_max": "983.72",
      "req_s_mean": "246.34",
      "req_s_sd": "228.94",
      "req_s_sd_pct": "228.94",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx angie branch HTTPS h2load OpenSSL 3.0 default benchmarks test


    Code (Text):
    Nginx angie branch HTTPS h2load OpenSSL 3.0 default benchmarks test
    Angie version: Angie/1.4.0 (030124-070216-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.0.12 24 Oct 2023
    {
      "time": "648.73ms",
      "req_per_sec": "7707.43",
      "mbs": "16.66MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "15.22",
      "req_max": "405.85",
      "req_mean": "197.94",
      "req_sd": "106.26ms",
      "req_sd_pct": "59.04%",
      "conn_min": "10.46",
      "conn_max": "361.24",
      "conn_mean": "127.91",
      "conn_sd": "136.14ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "49.32",
      "first_byte_max": "635.26",
      "first_byte_mean": "320.48",
      "first_byte_sd": "173.99ms",
      "first_byte_sd_pct": "57.00%",
      "req_s_min": "77.46",
      "req_s_max": "1000.15",
      "req_s_mean": "245.58",
      "req_s_sd": "227.63",
      "req_s_sd_pct": "227.63",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx master branch HTTPS h2load OpenSSL 3.0 default benchmarks test


    Code (Text):
    Nginx master branch HTTPS h2load OpenSSL 3.0 default benchmarks test
    nginx version: nginx/1.25.4 (030124-070528-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.0.12 24 Oct 2023
    {
      "time": "680.12ms",
      "req_per_sec": "7351.69",
      "mbs": "15.89MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "8.83",
      "req_max": "428.16",
      "req_mean": "196.45",
      "req_sd": "113.18ms",
      "req_sd_pct": "58.04%",
      "conn_min": "10.62",
      "conn_max": "384.86",
      "conn_mean": "131.04",
      "conn_sd": "141.99ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "49.72",
      "first_byte_max": "664.55",
      "first_byte_mean": "322.00",
      "first_byte_sd": "180.37ms",
      "first_byte_sd_pct": "57.00%",
      "req_s_min": "73.91",
      "req_s_max": "991.65",
      "req_s_mean": "252.97",
      "req_s_sd": "238.90",
      "req_s_sd_pct": "238.90",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx HTTPS h2load OpenSSL 3.1 default benchmarks test


    Code (Text):
    Nginx HTTPS h2load OpenSSL 3.1 default benchmarks test
    nginx version: nginx/1.25.3 (030124-071248-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.1.4 24 Oct 2023
    {
      "time": "649.77ms",
      "req_per_sec": "7695.05",
      "mbs": "16.63MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "19.86",
      "req_max": "491.31",
      "req_mean": "259.10",
      "req_sd": "118.59ms",
      "req_sd_pct": "63.66%",
      "conn_min": "6.70",
      "conn_max": "206.19",
      "conn_mean": "75.97",
      "conn_sd": "77.11ms",
      "conn_sd_pct": "77.00%",
      "first_byte_min": "30.36",
      "first_byte_max": "635.82",
      "first_byte_mean": "329.26",
      "first_byte_sd": "177.23ms",
      "first_byte_sd_pct": "59.00%",
      "req_s_min": "77.27",
      "req_s_max": "1624.67",
      "req_s_mean": "248.80",
      "req_s_sd": "276.48",
      "req_s_sd_pct": "276.48",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx angie branch HTTPS h2load OpenSSL 3.1 default benchmarks test


    Code (Text):
    Nginx angie branch HTTPS h2load OpenSSL 3.1 default benchmarks test
    Angie version: Angie/1.4.0 (030124-071949-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.1.4 24 Oct 2023
    {
      "time": "658.75ms",
      "req_per_sec": "7590.12",
      "mbs": "16.40MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "33.68",
      "req_max": "438.19",
      "req_mean": "204.65",
      "req_sd": "107.93ms",
      "req_sd_pct": "61.90%",
      "conn_min": "3.18",
      "conn_max": "311.93",
      "conn_mean": "114.26",
      "conn_sd": "113.64ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "51.40",
      "first_byte_max": "644.32",
      "first_byte_mean": "313.71",
      "first_byte_sd": "173.99ms",
      "first_byte_sd_pct": "58.00%",
      "req_s_min": "76.37",
      "req_s_max": "959.57",
      "req_s_mean": "253.18",
      "req_s_sd": "229.78",
      "req_s_sd_pct": "229.78",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx master branch HTTPS h2load OpenSSL 3.1 default benchmarks test


    Code (Text):
    Nginx master branch HTTPS h2load OpenSSL 3.1 default benchmarks test
    nginx version: nginx/1.25.4 (030124-072307-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.1.4 24 Oct 2023
    {
      "time": "660.30ms",
      "req_per_sec": "7572.37",
      "mbs": "16.36MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "19.86",
      "req_max": "472.03",
      "req_mean": "269.21",
      "req_sd": "114.86ms",
      "req_sd_pct": "64.78%",
      "conn_min": "6.74",
      "conn_max": "222.74",
      "conn_mean": "84.58",
      "conn_sd": "87.57ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "30.42",
      "first_byte_max": "647.28",
      "first_byte_mean": "347.84",
      "first_byte_sd": "179.58ms",
      "first_byte_sd_pct": "60.00%",
      "req_s_min": "76.01",
      "req_s_max": "1621.41",
      "req_s_mean": "234.09",
      "req_s_sd": "273.47",
      "req_s_sd_pct": "273.47",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx HTTPS h2load OpenSSL 3.2 default benchmarks test


    Code (Text):
    Nginx HTTPS h2load OpenSSL 3.2 default benchmarks test
    nginx version: nginx/1.25.3 (030124-073124-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.2.0 23 Nov 2023
    {
      "time": "668.99ms",
      "req_per_sec": "7473.91",
      "mbs": "16.15MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "23.49",
      "req_max": "472.70",
      "req_mean": "255.00",
      "req_sd": "120.65ms",
      "req_sd_pct": "61.92%",
      "conn_min": "6.96",
      "conn_max": "193.17",
      "conn_mean": "70.78",
      "conn_sd": "69.54ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "33.93",
      "first_byte_max": "655.62",
      "first_byte_mean": "320.26",
      "first_byte_sd": "176.64ms",
      "first_byte_sd_pct": "59.00%",
      "req_s_min": "75.08",
      "req_s_max": "1437.63",
      "req_s_mean": "259.23",
      "req_s_sd": "274.34",
      "req_s_sd_pct": "274.34",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx angie branch HTTPS h2load OpenSSL 3.2 default benchmarks test


    Code (Text):
    Nginx angie branch HTTPS h2load OpenSSL 3.2 default benchmarks test
    Angie version: Angie/1.4.0 (030124-074033-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.2.0 23 Nov 2023
    {
      "time": "687.24ms",
      "req_per_sec": "7275.45",
      "mbs": "15.72MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "29.08",
      "req_max": "422.54",
      "req_mean": "226.22",
      "req_sd": "101.58ms",
      "req_sd_pct": "62.46%",
      "conn_min": "11.21",
      "conn_max": "339.37",
      "conn_mean": "131.43",
      "conn_sd": "136.09ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "47.07",
      "first_byte_max": "672.46",
      "first_byte_mean": "351.97",
      "first_byte_sd": "183.96ms",
      "first_byte_sd_pct": "59.00%",
      "req_s_min": "73.15",
      "req_s_max": "1053.06",
      "req_s_mean": "225.57",
      "req_s_sd": "227.30",
      "req_s_sd_pct": "227.30",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx master branch HTTPS h2load OpenSSL 3.2 default benchmarks test


    Code (Text):
    Nginx master branch HTTPS h2load OpenSSL 3.2 default benchmarks test
    nginx version: nginx/1.25.4 (030124-074402-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.2.0 23 Nov 2023
    {
      "time": "640.62ms",
      "req_per_sec": "7804.95",
      "mbs": "16.87MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "33.27",
      "req_max": "376.01",
      "req_mean": "190.67",
      "req_sd": "89.14ms",
      "req_sd_pct": "62.74%",
      "conn_min": "12.20",
      "conn_max": "370.14",
      "conn_mean": "140.32",
      "conn_sd": "147.71ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "51.41",
      "first_byte_max": "628.18",
      "first_byte_mean": "325.73",
      "first_byte_sd": "175.15ms",
      "first_byte_sd_pct": "57.00%",
      "req_s_min": "78.34",
      "req_s_max": "959.54",
      "req_s_mean": "236.74",
      "req_s_sd": "213.49",
      "req_s_sd_pct": "213.49",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx HTTPS h2load official zlib benchmarks test


    Code (Text):
    Nginx HTTPS h2load official zlib benchmarks test
    nginx version: nginx/1.25.3 (030124-074740-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 3.2.0 23 Nov 2023
    {
      "time": "755.02ms",
      "req_per_sec": "6622.31",
      "mbs": "14.42MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.89MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.81MB",
      "req_min": "33.37",
      "req_max": "480.13",
      "req_mean": "226.91",
      "req_sd": "119.16ms",
      "req_sd_pct": "60.38%",
      "conn_min": "10.33",
      "conn_max": "375.45",
      "conn_mean": "133.29",
      "conn_sd": "142.86ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "48.55",
      "first_byte_max": "740.42",
      "first_byte_mean": "354.08",
      "first_byte_sd": "201.40ms",
      "first_byte_sd_pct": "58.00%",
      "req_s_min": "66.49",
      "req_s_max": "1015.55",
      "req_s_mean": "236.77",
      "req_s_sd": "236.29",
      "req_s_sd_pct": "236.29",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx HTTPS h2load OpenSSL QuicTLS benchmarks test


    Code (Text):
    Nginx HTTPS h2load OpenSSL QuicTLS benchmarks test
    nginx version: nginx/1.25.3 (030124-075245-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 1.1.1w+quic  11 Sep 2023
    {
      "time": "683.53ms",
      "req_per_sec": "7314.95",
      "mbs": "15.81MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "19.97",
      "req_max": "493.18",
      "req_mean": "244.90",
      "req_sd": "117.00ms",
      "req_sd_pct": "65.22%",
      "conn_min": "6.83",
      "conn_max": "227.51",
      "conn_mean": "85.46",
      "conn_sd": "89.02ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "30.89",
      "first_byte_max": "668.53",
      "first_byte_mean": "324.69",
      "first_byte_sd": "179.92ms",
      "first_byte_sd_pct": "59.00%",
      "req_s_min": "73.47",
      "req_s_max": "1597.35",
      "req_s_mean": "258.39",
      "req_s_sd": "284.59",
      "req_s_sd_pct": "284.59",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx HTTPS h2load BoringSSL benchmarks test


    Code (Text):
    Nginx HTTPS h2load BoringSSL benchmarks test
    nginx version: nginx/1.25.3 (030124-080003-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 1.1.1 (compatible; BoringSSL) (running with BoringSSL)
    {
      "time": "653.74ms",
      "req_per_sec": "7648.28",
      "mbs": "16.53MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "20.88",
      "req_max": "432.78",
      "req_mean": "238.03",
      "req_sd": "103.70ms",
      "req_sd_pct": "65.60%",
      "conn_min": "6.85",
      "conn_max": "247.71",
      "conn_mean": "94.72",
      "conn_sd": "101.07ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "30.53",
      "first_byte_max": "641.04",
      "first_byte_mean": "327.14",
      "first_byte_sd": "172.47ms",
      "first_byte_sd_pct": "60.00%",
      "req_s_min": "76.82",
      "req_s_max": "1615.40",
      "req_s_mean": "249.43",
      "req_s_sd": "283.64",
      "req_s_sd_pct": "283.64",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx angie branch HTTPS h2load BoringSSL Post-Quantum KEX benchmarks test


    Code (Text):
    Nginx angie branch HTTPS h2load BoringSSL Post-Quantum KEX benchmarks test
    Angie version: Angie/1.4.0 (030124-080634-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 1.1.1 (compatible; BoringSSL) (running with BoringSSL)
    {
      "time": "693.83ms",
      "req_per_sec": "7206.42",
      "mbs": "15.57MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "31.59",
      "req_max": "485.50",
      "req_mean": "260.56",
      "req_sd": "119.79ms",
      "req_sd_pct": "63.80%",
      "conn_min": "7.07",
      "conn_max": "310.69",
      "conn_mean": "107.81",
      "conn_sd": "114.92ms",
      "conn_sd_pct": "82.00%",
      "first_byte_min": "43.72",
      "first_byte_max": "681.61",
      "first_byte_mean": "362.44",
      "first_byte_sd": "187.61ms",
      "first_byte_sd_pct": "59.00%",
      "req_s_min": "72.34",
      "req_s_max": "1126.11",
      "req_s_mean": "225.54",
      "req_s_sd": "240.88",
      "req_s_sd_pct": "240.88",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
    

    Nginx master branch HTTPS h2load BoringSSL Post-Quantum KEX benchmarks test


    Code (Text):
    Nginx master branch HTTPS h2load BoringSSL Post-Quantum KEX benchmarks test
    nginx version: nginx/1.25.4 (030124-081216-almalinux8-hyperv-docker-039ddcf)
    built by gcc 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
    built with OpenSSL 1.1.1 (compatible; BoringSSL) (running with BoringSSL)
    {
      "time": "610.59ms",
      "req_per_sec": "8188.79",
      "mbs": "17.70MB/s",
      "total_req": "5000",
      "started_req": "5000",
      "done_req": "5000",
      "succeeded_req": "5000",
      "failed_req": "0",
      "errored_req": "0",
      "timeout_req": "0",
      "status_2xx": "5000",
      "status_3xx": "0",
      "status_4xx": "0",
      "status_5xx": "0",
      "total_traffic": "10.81MB",
      "header_traffic": "1010.74KB",
      "data_traffic": "9.73MB",
      "req_min": "33.07",
      "req_max": "360.43",
      "req_mean": "166.03",
      "req_sd": "86.93ms",
      "req_sd_pct": "62.58%",
      "conn_min": "11.44",
      "conn_max": "367.61",
      "conn_mean": "147.02",
      "conn_sd": "156.97ms",
      "conn_sd_pct": "64.00%",
      "first_byte_min": "49.81",
      "first_byte_max": "596.71",
      "first_byte_mean": "307.84",
      "first_byte_sd": "169.64ms",
      "first_byte_sd_pct": "58.00%",
      "req_s_min": "82.41",
      "req_s_max": "989.90",
      "req_s_mean": "257.70",
      "req_s_sd": "234.53",
      "req_s_sd_pct": "234.53",
      "cipher": "TLS_AES_256_GCM_SHA384",
      "tempkey": "X25519",
      "protocol": "h2",
      "threads": "1",
      "connections": "100",
      "duration": "null",
      "warm_up_time": "null",
      "requests": "5000",
      "udp_sent": "",
      "udp_received": ""
    }
     
  8. buik

    buik “The best traveler is one without a camera.”

    1,962
    513
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,632
    Local Time:
    1:49 AM
  9. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    Yeah. I was wondering if Nginx/Angie with OpenSSL 3.2 auto enabled TLS certificate compression that the h2load HTTP/2 benchmarks reported data sizes would be lower or that because each served request would have smaller data size due to smaller SSL certificate size = more requests served per second.

    But I think Nginx SSL session caching and the fact I default to using smaller ECDSA 256bit SSL certificates for the test compared to RSA 2048bit SSL certificates, that there may not be much difference in compressed vs uncompressed size of ECDSA 256bit SSL certificates. Hence, not much difference in h2load HTTP/2 benchmark performance - assuming OpenSSL 3.2 TLS certificate compression is indeed enabled by default.
     
  10. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    Interesting back story for Angie's creation https://www.managedserver.eu/angie-...ed-by-former-Russian-employees-fired-from-f5/

     
  11. buik

    buik “The best traveler is one without a camera.”

    1,962
    513
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,632
    Local Time:
    1:49 AM
    Purely to maintain the availability of the software and service as a national interest. And that is understandable.

    And therefore you are probably not allowed to use their services anyway outside of Russia (sanctions).
    Hence, there is absolutely no reason to use Angie.

    Given that there are various sanctions regarding:
    By the way, this is totally not meant personally. I am against war and against sanctions.
     
  12. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    Indeed https://www.dfat.gov.au/internation...ons/sanctions-regimes/russia-sanctions-regime

    Though I don't think web servers or services are sanctioned? I think F5 pulled out not for sanctions but for their own stance on the war and uncertainty or safety of their employees in Russia.

    But I guess wouldn't hurt to have Angie support in Centmin Mod as an option for Russian based users. Though Russian users only made up 0.485% of the past 30 days of Centmin Mod installations! So barely registers LOL

    Top 15 countries for Centmin Mod installs for past 30 days :D
    1. United States: 37.07%
    2. Singapore: 14.15%
    3. Germany: 8.29%
    4. France: 8.29%
    5. United Kingdom: 5.37%
    6. Netherlands: 4.88%
    7. Indonesia: 3.41%
    8. Italy: 2.44%
    9. Finland: 2.44%
    10. Canada: 2.44%
    11. Vietnam: 1.95%
    12. Portugal: 1.95%
    13. Hong Kong: 0.98%
    14. China: 0.98%
    15. Luxembourg: 0.49%
     
  13. buik

    buik “The best traveler is one without a camera.”

    1,962
    513
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,632
    Local Time:
    1:49 AM
    Can't speak for Australia.
    But as a Fleming in Flanders, part of Belgium and a member of the EU. 100% sure it is.

    That was the official text and freely translated:

    It is just very difficult because many computer commodities, services and software have a Russian source. I think I even read that Russia has the most raw materials in its soil, out of all the countries in the world. And in the EU they punish severely in terms of company but also person. Now I cannot go further into it because otherwise I am violating my NDA.

    The bottom line is that EU politics thinks it is easy to hit Russia with sanctions. It mainly affects its own companies and persons. And the raw materials still come in via India, China and Azerbaijan. Obviously + 40% or more additional fee.

    Edit: official source The Council of the European Union: De EU-sancties tegen Rusland uitgelegd - Consilium (europa.eu)
     
    Last edited: Jan 5, 2024
  14. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    Thanks for sharing. Yeah in this connected world of interdependencies, it's much harder to place sanctions on an entire country.
     
  15. buik

    buik “The best traveler is one without a camera.”

    1,962
    513
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,632
    Local Time:
    1:49 AM
    The above sanctions apply to the 27 European states. Since almost every individual country has its own language and the law, is mostly only valid in its or there own language. Hence the various translations and I quote from my own mother tongue.

    Never mind that as a newbie (in law), Australian sanctions seem a lot milder. The EU is chopping it up quite a bit.
     
  16. eva2000

    eva2000 Administrator Staff Member

    51,981
    11,976
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,473
    Local Time:
    9:49 AM
    Nginx 1.25.x
    MariaDB 10.x
    There was mentions of Angie and Freenginx forks merging but respective devs have different goals and paths so probably won't happen Idea: combining with free nginx · Issue #74 · webserver-llc/angie

    From Valentin Bartenev from Angie Nginx fork stating basically that Maxim would be more picky and restrictive as to what get's added to Freenginx like he did for official Nginx code base.
    Like when Angie's HTTP/3 proxy support patches were submitted to official Nginx and pretty much blocked by Maxim