SlideShare a Scribd company logo
What’s New in NGINX Plus
R16?
Faisal Memon
Product Marketing Manager, NGINX
Formerly:
• Sr. Technical Marketing Engineer, Riverbed
• Technical Marketing Engineer, Cisco
• Software Engineer, Cisco
Who am I?
What is NGINX?
Internet
Web Server
Serve content from disk
Reverse Proxy
FastCGI, uWSGI, gRPC…
Load Balancer
Caching, SSL termination…
HTTP traffic
- Basic load balancer
- Content Cache
- Web Server
- Reverse Proxy
- SSL termination
- Rate limiting
- Basic authentication
- 7 metrics
NGINX Open Source NGINX Plus
+ Advanced load balancer
+ Health checks
+ Session persistence
+ Least time alg
+ Cache purging
+ HA/Clustering
+ JWT Authentication
+ OpenID Connect SSO
+ NGINX Plus API
+ Dynamic modules
+ 90+ metrics
Previously on…
• gRPC support
• HTTP/2 Server Push
• NGINX JavaScript sub requests
• Clustering support for Sticky Learn *
• OpenID Connect Authorization Code Workflow for SSO *
• Watch on demand:
nginx.com/webinars/whats-new-nginx-
plus-r15/
* NGINX Plus Exclusive
4
Agenda
• NGINX Plus R16 overview
• New Features in detail
• Demo
• Summary
NGINX Plus R16 Overview
Many customers run in NGINX Plus in multi-node clusters. NGINX Plus R16
adds new clustering features:
• Global rate limiting – Rate Limiting is now cluster-aware. Specify
global rate limits enforced by all nodes in cluster.
• Cluster-aware key-value store – Key-value pairs are
synced across the cluster. New timeout value. New DDoS mitigation use
case.
• Random with Two Choices – New algorithm. Select two
backend servers at random, send request to one with lowest load.
6
NGINX Plus R16 Overview
Additional features in NGINX Plus R16 include:
• Enhanced UDP load balancing – Support for multiple UDP
packets from client as part of same session. Support for more complex
UDP protocols: OpenVPN, VoIP, VDI, DTLS.
• PROXY Protocol v2– Support for the PROXY protocol v2 (PPv2)
header, ability to inspect custom type-length-value (TLV) values. AWS
PrivateLink support.
• New dynamic module, NGINX JavaScript updates, and more
7
Agenda
• NGINX Plus R16 overview
• New Features in detail
• Demo
• Summary
Clustering and State Sharing
9
• Production is always a cluster
• Avoids single point of failure (SPOF)
• 3 tiers of a cluster
NGINX Plus Clustering Review
• NGINX Plus R1 (2013) – Support for HA using
keepalived
• NGINX Plus R12 (2017) – Configuration synchronization
• NGINX Plus R15 (2018) – State sharing for Sticky Learn
session persistence
• NGINX Plus R16 (2018) – State sharing for Rate Limiting and
Key-Value Store
• All HA/clustering features exclusive to NGINX Plus
10
NGINX Plus State Sharing
stream {
resolver 10.0.0.53 valid=20s;
server {
listen 1.2.3.4:9000;
zone_sync;
zone_sync_server nginx1.example.com:9000 resolve;
}
}
Shared memory zones are identified in NGINX Plus with the zone
keyword (example on next slide) for data to be shared between
processors on the same server. The new zone_sync functionality
extends this memory to be shared across different servers.
• zone_sync -- Enables synchronization of shared memory zones
in a cluster.
• zone_sync_server -- Identifies the other NGINX Plus
instances in the cluster. You create a separate
zone_sync_server for each server in the cluster.
• Add into main nginx.conf for each server in the cluster
Global Rate Limiting
limit_req_zone $binary_remote_addr zone=global:1M
rate=40r/s sync;
server {
listen 80;
server_name www.example.com;
location / {
limit_req zone=global;
proxy_set_header Host $host;
proxy_pass http://my_server;
}
}
• Rate limiting is to control the amount of requests sent to backend
servers. The limit can be applied per IP Address, or other parts of the
request.
• Add the sync parameter at the end of rate limit definition
(limit_req_zone)
• The shared memory zone (global) that holds the current per ip
rate are synced across all nodes in the cluster
• All nodes will collectively enforce the rate limit, 40 requests/second in
this example
Cluster-Aware Key-Value Store
keyval_zone zone=blacklist:1M timeout=600 sync;
keyval $remote_addr $target zone=blacklist;
server {
listen 80;
server_name www.example.com;
if ($target) {
return 403;
}
location / {
proxy_set_header Host $host;
proxy_pass http://my_server;
}
location /api {
api write=on;
}
}
• Add the sync parameter at the end of key-value store definition
(keyval_zone)
• The timeout parameter specfies how long key-value pairs are valid, in
seconds. The timeout is required if syncing the key-value store.
• In this example we are creating a dynamic IP blacklist. Any IP addresses in
the key-value store are blocked.
• curl -X POST -d '{"192.0.2.26": "1"}'
http://www.example.com/api/3/http/keyval
s/blacklist
• Access to /api should be restricted using IP access controls
(allow, deny)
Random with Two Choices
upstream my_backend {
server server1.example.com;
server server2.example.com;
server server3.example.com;
random two least_time=last_byte;
}
server {
listen 80;
location / {
proxy_set_header Host $host;
proxy_pass http://my_backend;
}
}
• Pick two servers at random, send request to the one with the quickest response time.
• Suitable for clusters with multiple active NGINX Plus servers
• Due to workload variance, regular least_time not always accurate
• Can alternatively use least_conn instead of least_time
• Can also specify just random for pure random load balancing
• The least_time parameter and response time metrics are NGINX Plus
exclusive
Enhanced UDP Load Balancing
stream {
server {
listen 1195 udp;
proxy_pass 127.0.0.1:1194;
}
}
• NGINX Plus R9 first introduced UDP load balancing but was limited to one packet per client.
Only simple protocols such as DNS and RADIUS were supported.
• NGINX Plus R16 UDP load balancing can handle multiple packets from a client. More
complex UDP protocols such as OpenVPN, VOIP, VDI are now supported.
• UDP load balancing is configured in a stream block by adding the udp parameter to
the listen directive.
• The example to the left is a suitable configuration for OpenVPN.
PROXY Protocol v2 (PPv2)
server {
listen 80 proxy_protocol;
location /app/ {
proxy_pass http://backend1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP
$proxy_protocol_addr;
proxy_set_header X-Forwarded-For
$proxy_protocol_addr;
}
}
• PROXY Protocol is used to obtain original client IP/Port when multiple load
balancers and proxies are chained.
• PROXY Protocol v2 moves from text to binary header
• Add proxy_protocol as parameter to listen
• $proxy_protocol_addr, $proxy_protocol_port
are populated with original client IP/Port
• Supported for HTTP and Stream
• Can also add PROXY Protocol header using proxy_protocol
directive. (Stream only)
stream {
server {
listen 12345;
proxy_pass example.com:12345;
proxy_protocol on;
}
}
AWS PrivateLink Support
server {
listen 80 proxy_protocol;
location /app/ {
proxy_pass http://backend1;
proxy_set_header Host $host;
proxy_set_header X-Cluster-VPC
$proxy_protocol_tlv_0xEA;
}
}
• AWS PrivateLink is for secure VPC to VPC communication without going over
public internet or using VPNs.
• The Provider VPC (server-side) has an NLB that adds PROXY Protocol
header with custom field that holds client VPC Endpoint ID.
• NGINX Plus reads this value into variable named
$proxy_protocol_tlv_0xEA
• Variable can be passed to application server, logged, used as rate limiting
key, etc.
• Exclusive to NGINX Plus
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$proxy_protocol_tlv_0xEA"';
18
• OpenID opaque session tokens -- Actual JWT not sent to client, random string instead.
• Support for SSL/clear traffic on same port – New variable
$ssl_preread_protocol allows you to distinguish between the two.
• New Encrypted Session Dynamic Module -- Provides encryption and decryption support for
NGINX variables based on AES-256 with MAC
• NGINX JavaScript enhancements -- Simplified request/response handling, new support for:
bytesFrom(), padStart(), padEnd(), getrandom(),
getentropy(), and binary literals
Miscellaneous New Features
Changes in Behavior
• upstream_conf and extended status APIs now removed, replaced by NGINX Plus API. See
transition guide on our blog:
• nginx.com/blog/transitioning-to-nginx-plus-api-configuration-monitoring
• NGINX Plus is no longer supported on Ubuntu 17.10 (Artful), FreeBSD 10.3, or FreeBSD 11.0.
• Ubuntu 14.04, 16.04, and 18.04
• FreeBSD 10.4+, 11.1+
• New Relic plugin open sourced and available on GitHub, but no longer supported
• github.com/nginxinc/new-relic-agent
Agenda
• NGINX Plus R16 overview
• New Features in detail
• Demo
• Summary
Demo: The “Sin Bin”
limit_req_zone $remote_addr zone=per_ip:1M rate=100r/s sync;
limit_req_status 429;
keyval_zone zone=sinbin:1M timeout=600 sync;
keyval $remote_addr $in_sinbin zone=sinbin;
server {
listen 80;
location / {
if ($in_sinbin) {
set $limit_rate 50; # Restrict bandwidth of bad clients
}
limit_req zone=per_ip;
error_page 429 = @send_to_sinbin;
proxy_pass http://my_backend;
}
location @send_to_sinbin {
rewrite ^ /api/3/http/keyvals/sinbin break;
proxy_method POST;
proxy_set_body '{"$remote_addr":"1"}’;
proxy_pass http://127.0.0.1:80;
}
location /api/ {
api write=on;
}
}
• Clients that exceed the rate limit are put into the “sin bin”. Clients in the
”sin bin” are restricted to a low bandwidth, 50 bytes per second.
• Bots can easily detect if they’ve been blocked and move to a new IP,
more difficult to detect bandwidth reduction.
• Demo environment:
• 3 NGINX Plus servers in Digital Ocean
• WordPress server
• Loadster simulating bad actors and regular users
Agenda
• NGINX Plus R16 overview
• New Features in detail
• Demo
• Summary
Summary
• NGINX Plus R16 has new clustering features for active/active deployments
• Rate limiting is cluster-aware, enabling you to configure global rate limits
• Key-value store is cluster-aware, key-value pairs are synced to all cluster nodes
• New Random with Two Choices algorithm recommended for all clustered deployments with variable
workloads
• Enhanced UDP Load Balancing support multiple packets from a client and more complex protocols such as
OpenVPN
• Proxy Protocol v2 (PPv2) is now supported, along with AWS PrivateLink
Download our Free Ebook
24
• How NGINX fits as a complement or replacement for existing API gateway
and API management approaches
• How to take an existing NGINX Open Source or NGINX Plus configuration
and extend it to also manage API traffic
• How to create a range of safeguards that can be applied to protect and
secure backend API services in production
• How to deploy NGINX Plus as an API gateway for gRPC services
Download now: nginx.com/resources/library/
nginx-api-gateway-deployment/
Q & ATry NGINX Plus and NGINX WAF free for 30 days: nginx.com/free-trial-request

More Related Content

What's hot (20)

PPTX
NGINX Plus R20 Webinar EMEA
NGINX, Inc.
 
PPTX
Dynamic SSL Certificates and Other New Features in NGINX Plus R18 and NGINX O...
NGINX, Inc.
 
PDF
Using NGINX and NGINX Plus as a Kubernetes Ingress
Kevin Jones
 
PDF
NGINX ADC: Basics and Best Practices – EMEA
NGINX, Inc.
 
PPTX
The 3 Models in the NGINX Microservices Reference Architecture
NGINX, Inc.
 
PPTX
What’s New in NGINX Plus R15?
NGINX, Inc.
 
PPTX
Nginx Deep Dive Kubernetes Ingress
Knoldus Inc.
 
PDF
NGINX ADC: Basics and Best Practices
NGINX, Inc.
 
PPTX
NGINX: HTTP/2 Server Push and gRPC
NGINX, Inc.
 
PPTX
NGINX Plus R20 Webinar
NGINX, Inc.
 
PDF
NGINX Controller: Configuration, Management, and Troubleshooting at Scale – EMEA
NGINX, Inc.
 
PPTX
NGINX: High Performance Load Balancing
NGINX, Inc.
 
PDF
From Code to Customer with F5 and NGNX London Nov 19
NGINX, Inc.
 
PPTX
What's new in NGINX Plus R19
NGINX, Inc.
 
PPTX
NGINX as a Content Cache
NGINX, Inc.
 
PPTX
What's new in NGINX Plus R9
NGINX, Inc.
 
PPTX
Analyzing NGINX Logs with Datadog
NGINX, Inc.
 
PDF
NGINX Plus R19 : EMEA
NGINX, Inc.
 
PPTX
ModSecurity and NGINX: Tuning the OWASP Core Rule Set - EMEA (Updated)
NGINX, Inc.
 
PPTX
Global Server Load Balancing with NS1 and NGINX
NGINX, Inc.
 
NGINX Plus R20 Webinar EMEA
NGINX, Inc.
 
Dynamic SSL Certificates and Other New Features in NGINX Plus R18 and NGINX O...
NGINX, Inc.
 
Using NGINX and NGINX Plus as a Kubernetes Ingress
Kevin Jones
 
NGINX ADC: Basics and Best Practices – EMEA
NGINX, Inc.
 
The 3 Models in the NGINX Microservices Reference Architecture
NGINX, Inc.
 
What’s New in NGINX Plus R15?
NGINX, Inc.
 
Nginx Deep Dive Kubernetes Ingress
Knoldus Inc.
 
NGINX ADC: Basics and Best Practices
NGINX, Inc.
 
NGINX: HTTP/2 Server Push and gRPC
NGINX, Inc.
 
NGINX Plus R20 Webinar
NGINX, Inc.
 
NGINX Controller: Configuration, Management, and Troubleshooting at Scale – EMEA
NGINX, Inc.
 
NGINX: High Performance Load Balancing
NGINX, Inc.
 
From Code to Customer with F5 and NGNX London Nov 19
NGINX, Inc.
 
What's new in NGINX Plus R19
NGINX, Inc.
 
NGINX as a Content Cache
NGINX, Inc.
 
What's new in NGINX Plus R9
NGINX, Inc.
 
Analyzing NGINX Logs with Datadog
NGINX, Inc.
 
NGINX Plus R19 : EMEA
NGINX, Inc.
 
ModSecurity and NGINX: Tuning the OWASP Core Rule Set - EMEA (Updated)
NGINX, Inc.
 
Global Server Load Balancing with NS1 and NGINX
NGINX, Inc.
 

Similar to What’s New in NGINX Plus R16? (20)

PPTX
What's New in NGINX Plus R10?
NGINX, Inc.
 
PDF
What’s New in NGINX Plus R15? - EMEA
NGINX, Inc.
 
PPTX
What's New in NGINX Plus R8
NGINX, Inc.
 
PPTX
What's New in NGINX Plus R7?
NGINX, Inc.
 
PDF
Kubernetes and the NGINX Plus Ingress Controller
Katherine Bagood
 
PPTX
NGINX Plus R18: What's new
NGINX, Inc.
 
PDF
What's New in NGINX Plus R12?
NGINX, Inc.
 
PPTX
NGINX Lunch and Learn Event: Kubernetes and the NGINX Plus Ingress controller
Katherine Bagood
 
PPTX
Flawless Application Delivery with NGINX Plus
Peter Guagenti
 
PPTX
NGINX Basics: Ask Me Anything – EMEA
NGINX, Inc.
 
PDF
TLS 1.3 and Other New Features in NGINX Plus R17 and NGINX Open Source EMEA
NGINX, Inc.
 
PPTX
TLS 1.3 and Other New Features in NGINX Plus R17 and NGINX Open Source
NGINX, Inc.
 
PPTX
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
NGINX, Inc.
 
PPTX
NGINX: High Performance Load Balancing
NGINX, Inc.
 
PDF
NGINX: The Past, Present and Future of the Modern Web
Kevin Jones
 
PDF
ITB2017 - Nginx ppf intothebox_2017
Ortus Solutions, Corp
 
PDF
ITB2019 NGINX Overview and Technical Aspects - Kevin Jones
Ortus Solutions, Corp
 
PPTX
Accelerating Your Web Application with NGINX
Kevin Jones
 
PDF
NGINX.conf 2016 - Fail in order to succeed ! Designing Microservices for fail...
Dragos Dascalita Haut
 
PPTX
Building a Secure, Performant Network Fabric for Microservice Applications
inovia
 
What's New in NGINX Plus R10?
NGINX, Inc.
 
What’s New in NGINX Plus R15? - EMEA
NGINX, Inc.
 
What's New in NGINX Plus R8
NGINX, Inc.
 
What's New in NGINX Plus R7?
NGINX, Inc.
 
Kubernetes and the NGINX Plus Ingress Controller
Katherine Bagood
 
NGINX Plus R18: What's new
NGINX, Inc.
 
What's New in NGINX Plus R12?
NGINX, Inc.
 
NGINX Lunch and Learn Event: Kubernetes and the NGINX Plus Ingress controller
Katherine Bagood
 
Flawless Application Delivery with NGINX Plus
Peter Guagenti
 
NGINX Basics: Ask Me Anything – EMEA
NGINX, Inc.
 
TLS 1.3 and Other New Features in NGINX Plus R17 and NGINX Open Source EMEA
NGINX, Inc.
 
TLS 1.3 and Other New Features in NGINX Plus R17 and NGINX Open Source
NGINX, Inc.
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
NGINX, Inc.
 
NGINX: High Performance Load Balancing
NGINX, Inc.
 
NGINX: The Past, Present and Future of the Modern Web
Kevin Jones
 
ITB2017 - Nginx ppf intothebox_2017
Ortus Solutions, Corp
 
ITB2019 NGINX Overview and Technical Aspects - Kevin Jones
Ortus Solutions, Corp
 
Accelerating Your Web Application with NGINX
Kevin Jones
 
NGINX.conf 2016 - Fail in order to succeed ! Designing Microservices for fail...
Dragos Dascalita Haut
 
Building a Secure, Performant Network Fabric for Microservice Applications
inovia
 
Ad

More from NGINX, Inc. (20)

PDF
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
NGINX, Inc.
 
PDF
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
NGINX, Inc.
 
PDF
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
NGINX, Inc.
 
PPTX
Get Hands-On with NGINX and QUIC+HTTP/3
NGINX, Inc.
 
PPTX
Managing Kubernetes Cost and Performance with NGINX & Kubecost
NGINX, Inc.
 
PDF
Manage Microservices Chaos and Complexity with Observability
NGINX, Inc.
 
PDF
Accelerate Microservices Deployments with Automation
NGINX, Inc.
 
PDF
Unit 2: Microservices Secrets Management 101
NGINX, Inc.
 
PDF
Unit 1: Apply the Twelve-Factor App to Microservices Architectures
NGINX, Inc.
 
PDF
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!
NGINX, Inc.
 
PDF
Easily View, Manage, and Scale Your App Security with F5 NGINX
NGINX, Inc.
 
PDF
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
NGINX, Inc.
 
PDF
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINX
NGINX, Inc.
 
PPTX
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
NGINX, Inc.
 
PPTX
Protecting Apps from Hacks in Kubernetes with NGINX
NGINX, Inc.
 
PPTX
NGINX Kubernetes API
NGINX, Inc.
 
PPTX
Successfully Implement Your API Strategy with NGINX
NGINX, Inc.
 
PPTX
Installing and Configuring NGINX Open Source
NGINX, Inc.
 
PPTX
Shift Left for More Secure Apps with F5 NGINX
NGINX, Inc.
 
PPTX
How to Avoid the Top 5 NGINX Configuration Mistakes.pptx
NGINX, Inc.
 
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
NGINX, Inc.
 
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
NGINX, Inc.
 
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
NGINX, Inc.
 
Get Hands-On with NGINX and QUIC+HTTP/3
NGINX, Inc.
 
Managing Kubernetes Cost and Performance with NGINX & Kubecost
NGINX, Inc.
 
Manage Microservices Chaos and Complexity with Observability
NGINX, Inc.
 
Accelerate Microservices Deployments with Automation
NGINX, Inc.
 
Unit 2: Microservices Secrets Management 101
NGINX, Inc.
 
Unit 1: Apply the Twelve-Factor App to Microservices Architectures
NGINX, Inc.
 
NGINX基本セミナー(セキュリティ編)~NGINXでセキュアなプラットフォームを実現する方法!
NGINX, Inc.
 
Easily View, Manage, and Scale Your App Security with F5 NGINX
NGINX, Inc.
 
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
NGINX, Inc.
 
Keep Ahead of Evolving Cyberattacks with OPSWAT and F5 NGINX
NGINX, Inc.
 
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
NGINX, Inc.
 
Protecting Apps from Hacks in Kubernetes with NGINX
NGINX, Inc.
 
NGINX Kubernetes API
NGINX, Inc.
 
Successfully Implement Your API Strategy with NGINX
NGINX, Inc.
 
Installing and Configuring NGINX Open Source
NGINX, Inc.
 
Shift Left for More Secure Apps with F5 NGINX
NGINX, Inc.
 
How to Avoid the Top 5 NGINX Configuration Mistakes.pptx
NGINX, Inc.
 
Ad

Recently uploaded (20)

PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PDF
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 

What’s New in NGINX Plus R16?

  • 1. What’s New in NGINX Plus R16?
  • 2. Faisal Memon Product Marketing Manager, NGINX Formerly: • Sr. Technical Marketing Engineer, Riverbed • Technical Marketing Engineer, Cisco • Software Engineer, Cisco Who am I?
  • 3. What is NGINX? Internet Web Server Serve content from disk Reverse Proxy FastCGI, uWSGI, gRPC… Load Balancer Caching, SSL termination… HTTP traffic - Basic load balancer - Content Cache - Web Server - Reverse Proxy - SSL termination - Rate limiting - Basic authentication - 7 metrics NGINX Open Source NGINX Plus + Advanced load balancer + Health checks + Session persistence + Least time alg + Cache purging + HA/Clustering + JWT Authentication + OpenID Connect SSO + NGINX Plus API + Dynamic modules + 90+ metrics
  • 4. Previously on… • gRPC support • HTTP/2 Server Push • NGINX JavaScript sub requests • Clustering support for Sticky Learn * • OpenID Connect Authorization Code Workflow for SSO * • Watch on demand: nginx.com/webinars/whats-new-nginx- plus-r15/ * NGINX Plus Exclusive 4
  • 5. Agenda • NGINX Plus R16 overview • New Features in detail • Demo • Summary
  • 6. NGINX Plus R16 Overview Many customers run in NGINX Plus in multi-node clusters. NGINX Plus R16 adds new clustering features: • Global rate limiting – Rate Limiting is now cluster-aware. Specify global rate limits enforced by all nodes in cluster. • Cluster-aware key-value store – Key-value pairs are synced across the cluster. New timeout value. New DDoS mitigation use case. • Random with Two Choices – New algorithm. Select two backend servers at random, send request to one with lowest load. 6
  • 7. NGINX Plus R16 Overview Additional features in NGINX Plus R16 include: • Enhanced UDP load balancing – Support for multiple UDP packets from client as part of same session. Support for more complex UDP protocols: OpenVPN, VoIP, VDI, DTLS. • PROXY Protocol v2– Support for the PROXY protocol v2 (PPv2) header, ability to inspect custom type-length-value (TLV) values. AWS PrivateLink support. • New dynamic module, NGINX JavaScript updates, and more 7
  • 8. Agenda • NGINX Plus R16 overview • New Features in detail • Demo • Summary
  • 9. Clustering and State Sharing 9 • Production is always a cluster • Avoids single point of failure (SPOF) • 3 tiers of a cluster
  • 10. NGINX Plus Clustering Review • NGINX Plus R1 (2013) – Support for HA using keepalived • NGINX Plus R12 (2017) – Configuration synchronization • NGINX Plus R15 (2018) – State sharing for Sticky Learn session persistence • NGINX Plus R16 (2018) – State sharing for Rate Limiting and Key-Value Store • All HA/clustering features exclusive to NGINX Plus 10
  • 11. NGINX Plus State Sharing stream { resolver 10.0.0.53 valid=20s; server { listen 1.2.3.4:9000; zone_sync; zone_sync_server nginx1.example.com:9000 resolve; } } Shared memory zones are identified in NGINX Plus with the zone keyword (example on next slide) for data to be shared between processors on the same server. The new zone_sync functionality extends this memory to be shared across different servers. • zone_sync -- Enables synchronization of shared memory zones in a cluster. • zone_sync_server -- Identifies the other NGINX Plus instances in the cluster. You create a separate zone_sync_server for each server in the cluster. • Add into main nginx.conf for each server in the cluster
  • 12. Global Rate Limiting limit_req_zone $binary_remote_addr zone=global:1M rate=40r/s sync; server { listen 80; server_name www.example.com; location / { limit_req zone=global; proxy_set_header Host $host; proxy_pass http://my_server; } } • Rate limiting is to control the amount of requests sent to backend servers. The limit can be applied per IP Address, or other parts of the request. • Add the sync parameter at the end of rate limit definition (limit_req_zone) • The shared memory zone (global) that holds the current per ip rate are synced across all nodes in the cluster • All nodes will collectively enforce the rate limit, 40 requests/second in this example
  • 13. Cluster-Aware Key-Value Store keyval_zone zone=blacklist:1M timeout=600 sync; keyval $remote_addr $target zone=blacklist; server { listen 80; server_name www.example.com; if ($target) { return 403; } location / { proxy_set_header Host $host; proxy_pass http://my_server; } location /api { api write=on; } } • Add the sync parameter at the end of key-value store definition (keyval_zone) • The timeout parameter specfies how long key-value pairs are valid, in seconds. The timeout is required if syncing the key-value store. • In this example we are creating a dynamic IP blacklist. Any IP addresses in the key-value store are blocked. • curl -X POST -d '{"192.0.2.26": "1"}' http://www.example.com/api/3/http/keyval s/blacklist • Access to /api should be restricted using IP access controls (allow, deny)
  • 14. Random with Two Choices upstream my_backend { server server1.example.com; server server2.example.com; server server3.example.com; random two least_time=last_byte; } server { listen 80; location / { proxy_set_header Host $host; proxy_pass http://my_backend; } } • Pick two servers at random, send request to the one with the quickest response time. • Suitable for clusters with multiple active NGINX Plus servers • Due to workload variance, regular least_time not always accurate • Can alternatively use least_conn instead of least_time • Can also specify just random for pure random load balancing • The least_time parameter and response time metrics are NGINX Plus exclusive
  • 15. Enhanced UDP Load Balancing stream { server { listen 1195 udp; proxy_pass 127.0.0.1:1194; } } • NGINX Plus R9 first introduced UDP load balancing but was limited to one packet per client. Only simple protocols such as DNS and RADIUS were supported. • NGINX Plus R16 UDP load balancing can handle multiple packets from a client. More complex UDP protocols such as OpenVPN, VOIP, VDI are now supported. • UDP load balancing is configured in a stream block by adding the udp parameter to the listen directive. • The example to the left is a suitable configuration for OpenVPN.
  • 16. PROXY Protocol v2 (PPv2) server { listen 80 proxy_protocol; location /app/ { proxy_pass http://backend1; proxy_set_header Host $host; proxy_set_header X-Real-IP $proxy_protocol_addr; proxy_set_header X-Forwarded-For $proxy_protocol_addr; } } • PROXY Protocol is used to obtain original client IP/Port when multiple load balancers and proxies are chained. • PROXY Protocol v2 moves from text to binary header • Add proxy_protocol as parameter to listen • $proxy_protocol_addr, $proxy_protocol_port are populated with original client IP/Port • Supported for HTTP and Stream • Can also add PROXY Protocol header using proxy_protocol directive. (Stream only) stream { server { listen 12345; proxy_pass example.com:12345; proxy_protocol on; } }
  • 17. AWS PrivateLink Support server { listen 80 proxy_protocol; location /app/ { proxy_pass http://backend1; proxy_set_header Host $host; proxy_set_header X-Cluster-VPC $proxy_protocol_tlv_0xEA; } } • AWS PrivateLink is for secure VPC to VPC communication without going over public internet or using VPNs. • The Provider VPC (server-side) has an NLB that adds PROXY Protocol header with custom field that holds client VPC Endpoint ID. • NGINX Plus reads this value into variable named $proxy_protocol_tlv_0xEA • Variable can be passed to application server, logged, used as rate limiting key, etc. • Exclusive to NGINX Plus log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$proxy_protocol_tlv_0xEA"';
  • 18. 18 • OpenID opaque session tokens -- Actual JWT not sent to client, random string instead. • Support for SSL/clear traffic on same port – New variable $ssl_preread_protocol allows you to distinguish between the two. • New Encrypted Session Dynamic Module -- Provides encryption and decryption support for NGINX variables based on AES-256 with MAC • NGINX JavaScript enhancements -- Simplified request/response handling, new support for: bytesFrom(), padStart(), padEnd(), getrandom(), getentropy(), and binary literals Miscellaneous New Features
  • 19. Changes in Behavior • upstream_conf and extended status APIs now removed, replaced by NGINX Plus API. See transition guide on our blog: • nginx.com/blog/transitioning-to-nginx-plus-api-configuration-monitoring • NGINX Plus is no longer supported on Ubuntu 17.10 (Artful), FreeBSD 10.3, or FreeBSD 11.0. • Ubuntu 14.04, 16.04, and 18.04 • FreeBSD 10.4+, 11.1+ • New Relic plugin open sourced and available on GitHub, but no longer supported • github.com/nginxinc/new-relic-agent
  • 20. Agenda • NGINX Plus R16 overview • New Features in detail • Demo • Summary
  • 21. Demo: The “Sin Bin” limit_req_zone $remote_addr zone=per_ip:1M rate=100r/s sync; limit_req_status 429; keyval_zone zone=sinbin:1M timeout=600 sync; keyval $remote_addr $in_sinbin zone=sinbin; server { listen 80; location / { if ($in_sinbin) { set $limit_rate 50; # Restrict bandwidth of bad clients } limit_req zone=per_ip; error_page 429 = @send_to_sinbin; proxy_pass http://my_backend; } location @send_to_sinbin { rewrite ^ /api/3/http/keyvals/sinbin break; proxy_method POST; proxy_set_body '{"$remote_addr":"1"}’; proxy_pass http://127.0.0.1:80; } location /api/ { api write=on; } } • Clients that exceed the rate limit are put into the “sin bin”. Clients in the ”sin bin” are restricted to a low bandwidth, 50 bytes per second. • Bots can easily detect if they’ve been blocked and move to a new IP, more difficult to detect bandwidth reduction. • Demo environment: • 3 NGINX Plus servers in Digital Ocean • WordPress server • Loadster simulating bad actors and regular users
  • 22. Agenda • NGINX Plus R16 overview • New Features in detail • Demo • Summary
  • 23. Summary • NGINX Plus R16 has new clustering features for active/active deployments • Rate limiting is cluster-aware, enabling you to configure global rate limits • Key-value store is cluster-aware, key-value pairs are synced to all cluster nodes • New Random with Two Choices algorithm recommended for all clustered deployments with variable workloads • Enhanced UDP Load Balancing support multiple packets from a client and more complex protocols such as OpenVPN • Proxy Protocol v2 (PPv2) is now supported, along with AWS PrivateLink
  • 24. Download our Free Ebook 24 • How NGINX fits as a complement or replacement for existing API gateway and API management approaches • How to take an existing NGINX Open Source or NGINX Plus configuration and extend it to also manage API traffic • How to create a range of safeguards that can be applied to protect and secure backend API services in production • How to deploy NGINX Plus as an API gateway for gRPC services Download now: nginx.com/resources/library/ nginx-api-gateway-deployment/
  • 25. Q & ATry NGINX Plus and NGINX WAF free for 30 days: nginx.com/free-trial-request

Editor's Notes

  • #4: NGINX Plus gives you all the tools you need to deliver your application reliably. Web Server NGINX is a fully featured web server that can directly serve static content. NGINX Plus can scale to handle hundreds of thousands of clients simultaneously, and serve hundreds of thousands of content resources per second. Application Gateway NGINX handles all HTTP traffic, and forwards requests in a smooth, controlled manner to PHP, Ruby, Java, and other application types, using FastCGI, uWSGI, and Linux sockets. Reverse Proxy NGINX is a reverse proxy that you can put in front of your applications. NGINX can cache both static and dynamic content to improve overall performance, as well as load balance traffic enabling you to scale-out.
  • #6: - We will
  • #9: - We will
  • #15: Remember that you were the only airport staff member who was directing passengers to queues.  What happens if you are joined by several colleagues, so there are a number of you marshalling passengers to queues.  Very quickly, it all starts to go wrong! For example, when a group of travellers arrive, you each notice that queue numbers 3 and 4 are shorter than the others, so independently you each make the best choice and direct passengers to those queue.  Suddenly, the queues are overloaded!  In the same way, several independent load balancers can overload the upstream servers that appear to be best, no matter what ‘best choice' algorithm you use.
  • #21: - We will
  • #23: - We will