SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Jim Jagielski
@jimjag
Apache httpd v2.4
Reverse Proxy
The “Hidden” Gem
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
About Me
➡ Apache Software Foundation
➡ Co-founder, Director, Member and Developer
➡ Director
➡ Outercurve, MARSEC-XL, OSSI, OSI (ex)…
➡ Developer
➡ Mega FOSS projects
➡ O’Reilly Open Source Award: 2013
➡ European Commission: Luminary Award
➡ Sr. Director: Tech Fellows: Capital One
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4
➡ Currently at version 2.4.23 (2.4.1 went GA Feb 21, 2012)
➡ Significant Improvements
➡ high-performance
➡ cloud suitability
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4 - design drivers
➡ Support for async I/O w/o dropping support for older
systems
➡ Larger selection of usable MPMs: added event, motorz,
etc...
➡ Leverage higher-performant versions of APR
➡ Increase performance
➡ Reduce memory utilization
➡ The Cloud and Reverse Proxy
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
httpd is sooo old school (aka
fud)
➡ Apache doesn’t scale (its SLOW)
➡ http://www.youtube.com/watch?v=bzkRVzciAZg



➡ Apache is too generalized





➡ Apache is too complex (config file)
➡ really?
➡ Apache is too old

(yeah, just like Linux)
@jimjag
vs
It’s Squagels!
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Cloud and Dynamics
➡ The Cloud is a game changer for web servers
➡ The cloud is a dynamic place
➡ automated reconfiguration
➡ horizontal, not vertical scaling
➡ self-aware environments
@jimjag
OK, maybe not THAT self-aware
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Why Dynamic Proxy Matters
➡ Apache httpd still the most frequently used front-end
➡ Proxy capabilities must be cloud friendly
➡ Front-end must be dynamic friendly
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy
Internet
Firewall Firewall
Cloud
Reverse Proxy Server
Transactional
Servers
Browser
➡ Operates at the server end of the transaction
➡ Completely transparent to the Web Browser – thinks the
Reverse Proxy Server is the real server
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Features of Reverse Proxy Server
➡ Security
Uniform security policy can be administered
The real transactional servers are behind the firewall
➡ Delegation, Specialization, Load Balancing
➡ Caching
➡ Performance, HA
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Proxy Design Drivers
➡ Becoming a robust but generic proxy implementation
➡ Support various protocols
➡ HTTP, HTTPS, HTTP/2, CONNECT, FTP
➡ AJP, FastCGI, SCGI, WSGI
➡ Load balancing
➡ Clustering, failover
➡ Performance
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4 proxy
➡ Reverse Proxy Improvements
➡ Supports FastCGI, SCGI, Websockets in balancer
➡ Additional load balancing mechanisms
➡ Runtime changing of clusters w/o restarts
➡ Support for dynamic configuration
➡ mod_proxy_express
➡ mod_fcgid and fcgistarter
➡ Brand New: Support for Unix Domain Sockets
➡ Brand New: HTTP/2
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuring Reverse Proxy
➡ Set ProxyRequests Off
➡ Apply ProxyPass, ProxyPassReverse and possibly
RewriteRule directives
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy Directives:

ProxyPass
➡ Allows remote server to be mapped into the space of the
local (Reverse Proxy) server
➡ There is also ProxyPassMatch which takes a regex
➡ Example:
➡ ProxyPass /secure/ http://secureserver/

➡ Presumably “secureserver” is inaccessible directly from the
internet

➡ ProxyPassMatch ^/(.*.js)$ http://js-storage.example.com/bar/$1
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy Directives:

ProxyPassReverse
➡ Used to specify that redirects issued by the remote server
are to be translated to use the proxy before being
returned to the client.
➡ Syntax is identical to ProxyPass; used in conjunction with
it
➡ Example:
➡ProxyPass /secure/ http://secureserver/
➡ProxyPassReverse /secure/ http://secureserver/
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Simple Rev Proxy
➡ All requests for /images to a backend server
ProxyPass /images http://images.example.com/
ProxyPass <path> <scheme>://<full url>
➡ Useful, but limited
➡ What if:
images.example.com dies?
traffic for /images increases
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancing
➡ mod_proxy_balancer.so
➡ mod_proxy can do native load balancing
➡ weight by actual requests
➡ weight by traffic
➡ weight by busyness
➡ lbfactors
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Create a balancer “cluster”
➡ Create a balancer which contains several host nodes
➡ Apache httpd will then direct to each node as specified
@jimjag
<Proxy balancer://foo>
BalancerMember http://www1.example.com:80/ loadfactor=1
BalancerMember http://www2.example.com:80/ loadfactor=1
BalancerMember http://www3.example.com:80/ loadfactor=4 status=+h
ProxySet lbmethod=bytraffic
</Proxy>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers:
➡ loadfactor
➡ normalized load for worker [1]
➡ lbset
➡ worker cluster number [0]
➡ retry
➡ retry timeout, in seconds, for non-ready workers [60]
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers (cont):
➡ connectiontimeout/timout
➡ Connection timeouts on backend [ProxyTimeout]
➡ flushpackets *
➡ Does proxy need to flush data with each chunk of data?
➡ on : Yes | off : No | auto : wait and see
➡ flushwait *
➡ ms to wait for data before flushing
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers (cont):
➡ ping
➡ Ping backend to check for availability; value is time to wait for
response
➡ status (+/-)
➡ D : Disabled
➡ S : Stopped
➡ I : Ignore errors
➡ H : Hot standby
➡ E : Error
➡ N: Drain
➡ C: Dynamic Health Check
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For Balancers:
➡ lbmethod
➡ load balancing algo to use [byrequests]
➡ stickysession
➡ sticky session name (eg: PHPSESSIONID)
➡ maxattempts
➡ # failover tries before we bail
➡ growth
➡ Extra BalancerMember slots to allow for
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For Balancers:
➡ nofailover
➡ pretty freakin obvious
➡ For both:
➡ ProxySet
➡ Alternate method to set various params
@jimjag
ProxySet balancer://foo timeout=10
...
ProxyPass / balancer://foo timeout=10
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Connection Pooling
➡ Backend connection pooling
➡ Available for named workers:
➡ eg: ProxyPass /foo http://bar.example.com
➡ Reusable connection to origin
➡ For threaded MPMs, can adjust size of pool (min, max, smax)
➡ For prefork: singleton
➡ Shared data held in shared memory
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers - connection pool:
➡ min
➡ Initial number of connections [0]
➡ max
➡ Hard maximum number of connections [1|TPC]
➡ smax:
➡ soft max - keep this number available [max]
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers - connection pool:
➡ disablereuser/enablereuse:
➡ bypass/enable the connection pool (firewalls)
➡ ttl
➡ time to live for connections above smax
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Sessions
➡ Sticky session support
➡ aka “session affinity”
➡ Cookie based
➡ stickysession=PHPSESSID
➡ stickysession=JSESSIONID
➡ Natively easy with Tomcat
➡ May require more setup for “simple” HTTP proxying
➡ Use of mod_session helps
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Failover control
➡ Cluster set with failover
➡ Group backend servers as numbered sets
➡ balancer will try lower-valued sets first
➡ If no workers are available, will try next set
➡ Hot standby
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Putting it all together
@jimjag
<Proxy balancer://foo>
BalancerMember http://php1:8080/ loadfactor=1
BalancerMember http://php2:8080/ loadfactor=4
BalancerMember http://phpbkup:8080/ loadfactor=1 status=+h
BalancerMember http://phpexp:8080/ lbset=1
ProxySet lbmethod=bytraffic
</Proxy>
<Proxy balancer://javaapps>
BalancerMember ajp://tc1:8089/ loadfactor=10
BalancerMember ajp://tc2:8089/ loadfactor=40
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass /apps/ balancer://foo/
ProxyPassReverse /apps/ balancer://foo/
ProxyPass /serv/ balancer://javaapps/
ProxyPass /images/ http://images:8080/
ProxyPass /dyno h2c://pappy:80/
ProxyPass /foo unix:/home/www.socket|http://localhost/bar/
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Mass Reverse Proxy
➡ We front-end a LOT of reverse proxies
➡ What a httpd.conf disaster!
➡ Slow and bloated
➡ mod_rewrite doesn’t help
@jimjag
<VirtualHost www1.example.com>
ProxyPass / http://192.168.002.2:8080
ProxyPassReverse / http://192.168.002.2:8080
</VirtualHost>


<VirtualHost www2.example.com>
ProxyPass / http://192.168.002.12:8088

ProxyPassReverse / http://192.168.002.12:8088
</VirtualHost>
<VirtualHost www3.example.com>
ProxyPass / http://192.168.002.10
ProxyPassReverse / http://192.168.002.10
</VirtualHost>
...
<VirtualHost www6341.example.com>
ProxyPass / http://192.168.211.26
ProxyPassReverse / http://192.168.211.26
</VirtualHost>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Mass Reverse Proxy
➡ Use the new mod_proxy_express module
➡ ProxyPass mapping obtained via db file
➡ Fast and efficient
➡ Still dynamic, with no config changes required
➡ micro-services? You betcha!
@jimjag
ProxyExpress map file
##

##express-map.db:

##



www1.example.com http://192.168.002.2:8080

www2.example.com http://192.168.002.12:8088

www3.example.com http://192.168.002.10
...
www6341.example.com http://192.168.211.26
httpd.conf file
ProxyExpressEnable On
ProxyExpressDBMFile express-map.db
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
HeartBeat / HeartMonitor
➡ Experimental LB (load balance) method
➡ Uses multicast between gateway and reverse proxies
➡ Provides heartbeat (are you there?) capability
➡ Also provides basic load info
➡ This info stored in shm, and used for balancing
➡ Multicast can be an issue
➡ Use mod_header with %l, %i, %b (loadavg, idle, busy)
➡ but no LBmethod currently uses this :(
➡ We need a universal “load” measure
➡ Can we leverage nanomsg (MIT licensed!)
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
balancer-manager
➡ Embedded proxy admin web interface
➡ Allows for real-time
➡ Monitoring of stats for each worker
➡ Adjustment of worker params
➡ lbset
➡ load factor
➡ route
➡ enabled / disabled
➡ ...
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Embedded Admin
➡ Allows for real-time
➡ Addition of new workers/nodes
➡ Change of LB methods
➡ Can be persistent!
➡ More RESTful
➡ Can be CLI-driven
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Easy setup
<Location /balancer-manager>
SetHandler balancer-manager
Require 192.168.2.22
</Location>
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
server-status aware
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Performance
➡ From Bryan Call’s 2014 ApacheCon preso

(http://www.slideshare.net/bryan_call/choosing-a-proxy-server-apachecon-2014)
@jimjag
•  Squid&used&the&most&
CPU&again&
•  NGiNX&had&latency&
issues&
•  ATS&most&throughput& 0&
500&
1000&
1500&
2000&
2500&
ATS& NGiNX& Squid& Varnish& hBpd&
RPS$/$CPU$Usage$
0&
5000&
10000&
15000&
20000&
25000&
30000&
ATS& NGiNX& Squid& Varnish& hBpd&
Requests$Per$Second$
0&
5&
10&
15&
20&
25&
30&
35&
40&
ATS& NGiNX& Squid& Varnish& hBpd&
Latency$
Median&
95th&
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
nginx vs Event (typical)
Apache - Event MPM
0
500
1000
1500
2000
nginx
0
500
1,000
1,500
2,000
Open Write Read Close
Increasing concurrency Increasing concurrency
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache - Prefork MPM
0
500
1000
1500
2000
nginx vs Prefork (typical)
nginx
0
500
1,000
1,500
2,000
Open Write Read Close
Increasing concurrency Increasing concurrency
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Total req/resp time
Comparison - total transaction (close)
0
500
1000
1500
2000
Prefork Worker Event nginx
Increasing concurrency
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Resp to Req. Bursts - httperf
100 ---> 20000
0.00
1.75
3.50
5.25
7.00
min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev
prefork worker event nginx
Increasing concurrency
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Backend Status
➡ Dynamic Health Checks !
➡ TCP/IP Ping
➡ OPTIONS
➡ HEAD
➡ GET
@jimjag
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
<Proxy balancer://foo/>
BalancerMember http://www.example.com/ hcmethod=GET hcexpr=in_maint hcuri=/status.php
BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10
BalancerMember http://www3.example.com/ hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
BalancerMember http://www4.example.com/
</Proxy>
ProxyPass "/" “balancer://foo/"
ProxyPassReverse "/" “balancer://foo/"
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s on the horizon?
➡ Extend mod_proxy_express
➡ Adding additional protocols
➡ More dynamic configuration
➡ Adding balancers!
➡ Extend/improve caching
➡ Redis
➡ Memcache now mod_status aware
➡ Apache Geode?
➡ Performance, of course!
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
In conclusion...
➡ For cloud environs and other, the performance and dynamic
control of Apache httpd 2.4 in reverse proxies is just
what the Dr. ordered (and flexibility remains a big
strength)
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Thanks
@jimjag
Twitter: @jimjag
Emails:

jim@jaguNET.com

jim@apache.org

jim.jagielski@capitalone.com
http://www.slideshare.net/jimjag/

Mais conteúdo relacionado

Mais procurados

ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4Jim Jagielski
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Arun Gupta
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket IntroductionMarcelo Jabali
 
JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...
JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...
JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...Peter Moskovits
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of ThingsPeter Moskovits
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Tatsuhiko Miyagawa
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matterTomas Doran
 
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebHTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebPeter Lubbers
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Dana Luther
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaDana Luther
 
A web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentationA web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentationJustin Dorfman
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityPeter Lubbers
 
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Servicesewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST ServicesRob Tweed
 
qewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle Tierqewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle TierRob Tweed
 
EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...
EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...
EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...Rob Tweed
 
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.jsEWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.jsRob Tweed
 
Connecting to Web Services on Android
Connecting to Web Services on AndroidConnecting to Web Services on Android
Connecting to Web Services on Androidsullis
 
How to investigate and recover from a security breach in WordPress
How to investigate and recover from a security breach in WordPressHow to investigate and recover from a security breach in WordPress
How to investigate and recover from a security breach in WordPressOtto Kekäläinen
 

Mais procurados (20)

ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction
 
JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...
JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...
JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on ...
 
Plack at OSCON 2010
Plack at OSCON 2010Plack at OSCON 2010
Plack at OSCON 2010
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of Things
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
 
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebHTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the Web
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
 
A web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentationA web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentation
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and Connectivity
 
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Servicesewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
 
qewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle Tierqewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle Tier
 
EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...
EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...
EWD 3 Training Course Part 1: How Node.js Integrates With Global Storage Data...
 
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.jsEWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
 
Connecting to Web Services on Android
Connecting to Web Services on AndroidConnecting to Web Services on Android
Connecting to Web Services on Android
 
How to investigate and recover from a security breach in WordPress
How to investigate and recover from a security breach in WordPressHow to investigate and recover from a security breach in WordPress
How to investigate and recover from a security breach in WordPress
 

Destaque

Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licensesJim Jagielski
 
Apache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 PresentationApache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 Presentationultimatetux
 
httpd — Apache Web Server
httpd — Apache Web Serverhttpd — Apache Web Server
httpd — Apache Web Serverwebhostingguy
 
Apache Web Server Administration
Apache Web Server AdministrationApache Web Server Administration
Apache Web Server Administrationwebhostingguy
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
 
Learn how to develop for Android, beyond the Hello World android app - Cape T...
Learn how to develop for Android, beyond the Hello World android app - Cape T...Learn how to develop for Android, beyond the Hello World android app - Cape T...
Learn how to develop for Android, beyond the Hello World android app - Cape T...Joseph Kandi
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014bryan_call
 

Destaque (10)

Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licenses
 
Apache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 PresentationApache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 Presentation
 
httpd — Apache Web Server
httpd — Apache Web Serverhttpd — Apache Web Server
httpd — Apache Web Server
 
Apache Web Server Administration
Apache Web Server AdministrationApache Web Server Administration
Apache Web Server Administration
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!
 
Learn how to develop for Android, beyond the Hello World android app - Cape T...
Learn how to develop for Android, beyond the Hello World android app - Cape T...Learn how to develop for Android, beyond the Hello World android app - Cape T...
Learn how to develop for Android, beyond the Hello World android app - Cape T...
 
Apache
ApacheApache
Apache
 
Apache HTTP Server
Apache HTTP ServerApache HTTP Server
Apache HTTP Server
 
Chap 19 web
Chap 19 webChap 19 web
Chap 19 web
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014
 

Semelhante a Apache httpd 2.4 Reverse Proxy: The Hidden Gem

ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4Jim Jagielski
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4Jim Jagielski
 
Apache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer AppApache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer AppJim Jagielski
 
Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Jim Jagielski
 
Apache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyApache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyJim Jagielski
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindSam Keen
 
The state of navigator.register protocolhandler
The state of navigator.register protocolhandlerThe state of navigator.register protocolhandler
The state of navigator.register protocolhandlerGyuyoung Kim
 
Build Your Own HiveMQ Extension
Build Your Own HiveMQ ExtensionBuild Your Own HiveMQ Extension
Build Your Own HiveMQ ExtensionHiveMQ
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Thijs Feryn
 
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Codemotion
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
 
Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Yuji Takayama
 
Mitmproxy usage v20141216
Mitmproxy usage v20141216Mitmproxy usage v20141216
Mitmproxy usage v20141216Jingchao Di
 
Git Workshop : Git On The Server
Git Workshop : Git On The ServerGit Workshop : Git On The Server
Git Workshop : Git On The ServerWildan Maulana
 
When third parties stop being polite... and start getting real
When third parties stop being polite... and start getting realWhen third parties stop being polite... and start getting real
When third parties stop being polite... and start getting realCharles Vazac
 
Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...
Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...
Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...Nicholas Jansma
 
EuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears TrainingEuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears TrainingAlessandro Molina
 
Using NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content CacheUsing NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content CacheKevin Jones
 

Semelhante a Apache httpd 2.4 Reverse Proxy: The Hidden Gem (20)

Apache httpd v2.4
Apache httpd v2.4Apache httpd v2.4
Apache httpd v2.4
 
ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4
 
Apache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer AppApache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer App
 
Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!
 
Apache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyApache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse Proxy
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
The state of navigator.register protocolhandler
The state of navigator.register protocolhandlerThe state of navigator.register protocolhandler
The state of navigator.register protocolhandler
 
Build Your Own HiveMQ Extension
Build Your Own HiveMQ ExtensionBuild Your Own HiveMQ Extension
Build Your Own HiveMQ Extension
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
 
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012Movable Type 5.2 Overview at MTDDC 2012
Movable Type 5.2 Overview at MTDDC 2012
 
Mitmproxy usage v20141216
Mitmproxy usage v20141216Mitmproxy usage v20141216
Mitmproxy usage v20141216
 
Git Workshop : Git On The Server
Git Workshop : Git On The ServerGit Workshop : Git On The Server
Git Workshop : Git On The Server
 
When third parties stop being polite... and start getting real
When third parties stop being polite... and start getting realWhen third parties stop being polite... and start getting real
When third parties stop being polite... and start getting real
 
Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...
Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...
Check Yourself Before You Wreck Yourself: Auditing and Improving the Performa...
 
EuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears TrainingEuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears Training
 
Nginx pres
Nginx presNginx pres
Nginx pres
 
Using NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content CacheUsing NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content Cache
 

Mais de Jim Jagielski

OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023Jim Jagielski
 
Open Source Licenses and IP Overview
Open Source Licenses and IP OverviewOpen Source Licenses and IP Overview
Open Source Licenses and IP OverviewJim Jagielski
 
The History of The Apache Software Foundation
The History of The Apache Software FoundationThe History of The Apache Software Foundation
The History of The Apache Software FoundationJim Jagielski
 
Starting an Open Source Program Office
Starting an Open Source Program OfficeStarting an Open Source Program Office
Starting an Open Source Program OfficeJim Jagielski
 
InnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServInnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServJim Jagielski
 
All Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingAll Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingJim Jagielski
 
All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101Jim Jagielski
 
All Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceAll Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceJim Jagielski
 
ApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayJim Jagielski
 
Open Source Licensing 101
Open Source Licensing 101Open Source Licensing 101
Open Source Licensing 101Jim Jagielski
 
InnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayInnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayJim Jagielski
 
Keynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceKeynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceJim Jagielski
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceJim Jagielski
 
ApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherJim Jagielski
 
Open Source Licensing and Governance
Open Source Licensing and GovernanceOpen Source Licensing and Governance
Open Source Licensing and GovernanceJim Jagielski
 
Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.Jim Jagielski
 
The Apache Way: Why we do what we do
The Apache Way: Why we do what we doThe Apache Way: Why we do what we do
The Apache Way: Why we do what we doJim Jagielski
 
Why Community Matters
Why Community MattersWhy Community Matters
Why Community MattersJim Jagielski
 
Inner Source 101 - GWO2016
Inner Source 101 - GWO2016Inner Source 101 - GWO2016
Inner Source 101 - GWO2016Jim Jagielski
 

Mais de Jim Jagielski (20)

OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023
 
Open Source Licenses and IP Overview
Open Source Licenses and IP OverviewOpen Source Licenses and IP Overview
Open Source Licenses and IP Overview
 
The History of The Apache Software Foundation
The History of The Apache Software FoundationThe History of The Apache Software Foundation
The History of The Apache Software Foundation
 
The Apache Way
The Apache WayThe Apache Way
The Apache Way
 
Starting an Open Source Program Office
Starting an Open Source Program OfficeStarting an Open Source Program Office
Starting an Open Source Program Office
 
InnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServInnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServ
 
All Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingAll Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source Licensing
 
All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101
 
All Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceAll Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner Source
 
ApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache Way
 
Open Source Licensing 101
Open Source Licensing 101Open Source Licensing 101
Open Source Licensing 101
 
InnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayInnerSource 101 and The Apache Way
InnerSource 101 and The Apache Way
 
Keynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceKeynote from the Open Source 101 Conference
Keynote from the Open Source 101 Conference
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open Source
 
ApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the Feather
 
Open Source Licensing and Governance
Open Source Licensing and GovernanceOpen Source Licensing and Governance
Open Source Licensing and Governance
 
Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.
 
The Apache Way: Why we do what we do
The Apache Way: Why we do what we doThe Apache Way: Why we do what we do
The Apache Way: Why we do what we do
 
Why Community Matters
Why Community MattersWhy Community Matters
Why Community Matters
 
Inner Source 101 - GWO2016
Inner Source 101 - GWO2016Inner Source 101 - GWO2016
Inner Source 101 - GWO2016
 

Último

VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdfMatthew Sinclair
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)Delhi Call girls
 
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋nirzagarg
 
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...nirzagarg
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirtrahman018755
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...SUHANI PANDEY
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...tanu pandey
 
Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...
Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...
Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...SUHANI PANDEY
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...roncy bisnoi
 
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋nirzagarg
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge GraphsEleniIlkou
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableSeo
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"growthgrids
 
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...nilamkumrai
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...SUHANI PANDEY
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...kajalverma014
 

Último (20)

valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
 
Thalassery Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call G...
Thalassery Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call G...Thalassery Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call G...
Thalassery Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call G...
 
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
 
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
 
Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...
Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...
Wadgaon Sheri $ Call Girls Pune 10k @ I'm VIP Independent Escorts Girls 80057...
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
 
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 

Apache httpd 2.4 Reverse Proxy: The Hidden Gem

  • 1. Jim Jagielski @jimjag Apache httpd v2.4 Reverse Proxy The “Hidden” Gem
  • 2. This work is licensed under a Creative Commons Attribution 3.0 Unported License. About Me ➡ Apache Software Foundation ➡ Co-founder, Director, Member and Developer ➡ Director ➡ Outercurve, MARSEC-XL, OSSI, OSI (ex)… ➡ Developer ➡ Mega FOSS projects ➡ O’Reilly Open Source Award: 2013 ➡ European Commission: Luminary Award ➡ Sr. Director: Tech Fellows: Capital One @jimjag
  • 3. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache httpd 2.4 ➡ Currently at version 2.4.23 (2.4.1 went GA Feb 21, 2012) ➡ Significant Improvements ➡ high-performance ➡ cloud suitability @jimjag
  • 4. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache httpd 2.4 - design drivers ➡ Support for async I/O w/o dropping support for older systems ➡ Larger selection of usable MPMs: added event, motorz, etc... ➡ Leverage higher-performant versions of APR ➡ Increase performance ➡ Reduce memory utilization ➡ The Cloud and Reverse Proxy @jimjag
  • 5. This work is licensed under a Creative Commons Attribution 3.0 Unported License. httpd is sooo old school (aka fud) ➡ Apache doesn’t scale (its SLOW) ➡ http://www.youtube.com/watch?v=bzkRVzciAZg
 
 ➡ Apache is too generalized
 
 
 ➡ Apache is too complex (config file) ➡ really? ➡ Apache is too old
 (yeah, just like Linux) @jimjag vs It’s Squagels!
  • 6. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Cloud and Dynamics ➡ The Cloud is a game changer for web servers ➡ The cloud is a dynamic place ➡ automated reconfiguration ➡ horizontal, not vertical scaling ➡ self-aware environments @jimjag OK, maybe not THAT self-aware
  • 7. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Why Dynamic Proxy Matters ➡ Apache httpd still the most frequently used front-end ➡ Proxy capabilities must be cloud friendly ➡ Front-end must be dynamic friendly @jimjag
  • 8. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Reverse Proxy Internet Firewall Firewall Cloud Reverse Proxy Server Transactional Servers Browser ➡ Operates at the server end of the transaction ➡ Completely transparent to the Web Browser – thinks the Reverse Proxy Server is the real server @jimjag
  • 9. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Features of Reverse Proxy Server ➡ Security Uniform security policy can be administered The real transactional servers are behind the firewall ➡ Delegation, Specialization, Load Balancing ➡ Caching ➡ Performance, HA @jimjag
  • 10. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Proxy Design Drivers ➡ Becoming a robust but generic proxy implementation ➡ Support various protocols ➡ HTTP, HTTPS, HTTP/2, CONNECT, FTP ➡ AJP, FastCGI, SCGI, WSGI ➡ Load balancing ➡ Clustering, failover ➡ Performance @jimjag
  • 11. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache httpd 2.4 proxy ➡ Reverse Proxy Improvements ➡ Supports FastCGI, SCGI, Websockets in balancer ➡ Additional load balancing mechanisms ➡ Runtime changing of clusters w/o restarts ➡ Support for dynamic configuration ➡ mod_proxy_express ➡ mod_fcgid and fcgistarter ➡ Brand New: Support for Unix Domain Sockets ➡ Brand New: HTTP/2 @jimjag
  • 12. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuring Reverse Proxy ➡ Set ProxyRequests Off ➡ Apply ProxyPass, ProxyPassReverse and possibly RewriteRule directives @jimjag
  • 13. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Reverse Proxy Directives:
 ProxyPass ➡ Allows remote server to be mapped into the space of the local (Reverse Proxy) server ➡ There is also ProxyPassMatch which takes a regex ➡ Example: ➡ ProxyPass /secure/ http://secureserver/
 ➡ Presumably “secureserver” is inaccessible directly from the internet
 ➡ ProxyPassMatch ^/(.*.js)$ http://js-storage.example.com/bar/$1 @jimjag
  • 14. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Reverse Proxy Directives:
 ProxyPassReverse ➡ Used to specify that redirects issued by the remote server are to be translated to use the proxy before being returned to the client. ➡ Syntax is identical to ProxyPass; used in conjunction with it ➡ Example: ➡ProxyPass /secure/ http://secureserver/ ➡ProxyPassReverse /secure/ http://secureserver/ @jimjag
  • 15. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Simple Rev Proxy ➡ All requests for /images to a backend server ProxyPass /images http://images.example.com/ ProxyPass <path> <scheme>://<full url> ➡ Useful, but limited ➡ What if: images.example.com dies? traffic for /images increases @jimjag
  • 16. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Load Balancing ➡ mod_proxy_balancer.so ➡ mod_proxy can do native load balancing ➡ weight by actual requests ➡ weight by traffic ➡ weight by busyness ➡ lbfactors @jimjag
  • 17. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Create a balancer “cluster” ➡ Create a balancer which contains several host nodes ➡ Apache httpd will then direct to each node as specified @jimjag <Proxy balancer://foo> BalancerMember http://www1.example.com:80/ loadfactor=1 BalancerMember http://www2.example.com:80/ loadfactor=1 BalancerMember http://www3.example.com:80/ loadfactor=4 status=+h ProxySet lbmethod=bytraffic </Proxy>
  • 18. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers: ➡ loadfactor ➡ normalized load for worker [1] ➡ lbset ➡ worker cluster number [0] ➡ retry ➡ retry timeout, in seconds, for non-ready workers [60] @jimjag
  • 19. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers (cont): ➡ connectiontimeout/timout ➡ Connection timeouts on backend [ProxyTimeout] ➡ flushpackets * ➡ Does proxy need to flush data with each chunk of data? ➡ on : Yes | off : No | auto : wait and see ➡ flushwait * ➡ ms to wait for data before flushing @jimjag
  • 20. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers (cont): ➡ ping ➡ Ping backend to check for availability; value is time to wait for response ➡ status (+/-) ➡ D : Disabled ➡ S : Stopped ➡ I : Ignore errors ➡ H : Hot standby ➡ E : Error ➡ N: Drain ➡ C: Dynamic Health Check @jimjag
  • 21. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For Balancers: ➡ lbmethod ➡ load balancing algo to use [byrequests] ➡ stickysession ➡ sticky session name (eg: PHPSESSIONID) ➡ maxattempts ➡ # failover tries before we bail ➡ growth ➡ Extra BalancerMember slots to allow for @jimjag
  • 22. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For Balancers: ➡ nofailover ➡ pretty freakin obvious ➡ For both: ➡ ProxySet ➡ Alternate method to set various params @jimjag ProxySet balancer://foo timeout=10 ... ProxyPass / balancer://foo timeout=10
  • 23. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Connection Pooling ➡ Backend connection pooling ➡ Available for named workers: ➡ eg: ProxyPass /foo http://bar.example.com ➡ Reusable connection to origin ➡ For threaded MPMs, can adjust size of pool (min, max, smax) ➡ For prefork: singleton ➡ Shared data held in shared memory @jimjag
  • 24. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers - connection pool: ➡ min ➡ Initial number of connections [0] ➡ max ➡ Hard maximum number of connections [1|TPC] ➡ smax: ➡ soft max - keep this number available [max] @jimjag
  • 25. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers - connection pool: ➡ disablereuser/enablereuse: ➡ bypass/enable the connection pool (firewalls) ➡ ttl ➡ time to live for connections above smax @jimjag
  • 26. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Sessions ➡ Sticky session support ➡ aka “session affinity” ➡ Cookie based ➡ stickysession=PHPSESSID ➡ stickysession=JSESSIONID ➡ Natively easy with Tomcat ➡ May require more setup for “simple” HTTP proxying ➡ Use of mod_session helps @jimjag
  • 27. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Failover control ➡ Cluster set with failover ➡ Group backend servers as numbered sets ➡ balancer will try lower-valued sets first ➡ If no workers are available, will try next set ➡ Hot standby @jimjag
  • 28. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Putting it all together @jimjag <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 BalancerMember http://phpbkup:8080/ loadfactor=1 status=+h BalancerMember http://phpexp:8080/ lbset=1 ProxySet lbmethod=bytraffic </Proxy> <Proxy balancer://javaapps> BalancerMember ajp://tc1:8089/ loadfactor=10 BalancerMember ajp://tc2:8089/ loadfactor=40 ProxySet lbmethod=byrequests </Proxy> ProxyPass /apps/ balancer://foo/ ProxyPassReverse /apps/ balancer://foo/ ProxyPass /serv/ balancer://javaapps/ ProxyPass /images/ http://images:8080/ ProxyPass /dyno h2c://pappy:80/ ProxyPass /foo unix:/home/www.socket|http://localhost/bar/
  • 29. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Mass Reverse Proxy ➡ We front-end a LOT of reverse proxies ➡ What a httpd.conf disaster! ➡ Slow and bloated ➡ mod_rewrite doesn’t help @jimjag <VirtualHost www1.example.com> ProxyPass / http://192.168.002.2:8080 ProxyPassReverse / http://192.168.002.2:8080 </VirtualHost> 
 <VirtualHost www2.example.com> ProxyPass / http://192.168.002.12:8088
 ProxyPassReverse / http://192.168.002.12:8088 </VirtualHost> <VirtualHost www3.example.com> ProxyPass / http://192.168.002.10 ProxyPassReverse / http://192.168.002.10 </VirtualHost> ... <VirtualHost www6341.example.com> ProxyPass / http://192.168.211.26 ProxyPassReverse / http://192.168.211.26 </VirtualHost>
  • 30. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Mass Reverse Proxy ➡ Use the new mod_proxy_express module ➡ ProxyPass mapping obtained via db file ➡ Fast and efficient ➡ Still dynamic, with no config changes required ➡ micro-services? You betcha! @jimjag ProxyExpress map file ##
 ##express-map.db:
 ##
 
 www1.example.com http://192.168.002.2:8080
 www2.example.com http://192.168.002.12:8088
 www3.example.com http://192.168.002.10 ... www6341.example.com http://192.168.211.26 httpd.conf file ProxyExpressEnable On ProxyExpressDBMFile express-map.db
  • 31. This work is licensed under a Creative Commons Attribution 3.0 Unported License. HeartBeat / HeartMonitor ➡ Experimental LB (load balance) method ➡ Uses multicast between gateway and reverse proxies ➡ Provides heartbeat (are you there?) capability ➡ Also provides basic load info ➡ This info stored in shm, and used for balancing ➡ Multicast can be an issue ➡ Use mod_header with %l, %i, %b (loadavg, idle, busy) ➡ but no LBmethod currently uses this :( ➡ We need a universal “load” measure ➡ Can we leverage nanomsg (MIT licensed!) @jimjag
  • 32. This work is licensed under a Creative Commons Attribution 3.0 Unported License. balancer-manager ➡ Embedded proxy admin web interface ➡ Allows for real-time ➡ Monitoring of stats for each worker ➡ Adjustment of worker params ➡ lbset ➡ load factor ➡ route ➡ enabled / disabled ➡ ... @jimjag
  • 33. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Embedded Admin ➡ Allows for real-time ➡ Addition of new workers/nodes ➡ Change of LB methods ➡ Can be persistent! ➡ More RESTful ➡ Can be CLI-driven @jimjag
  • 34. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Easy setup <Location /balancer-manager> SetHandler balancer-manager Require 192.168.2.22 </Location> @jimjag
  • 35. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 36. This work is licensed under a Creative Commons Attribution 3.0 Unported License. server-status aware
  • 37. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Performance ➡ From Bryan Call’s 2014 ApacheCon preso
 (http://www.slideshare.net/bryan_call/choosing-a-proxy-server-apachecon-2014) @jimjag •  Squid&used&the&most& CPU&again& •  NGiNX&had&latency& issues& •  ATS&most&throughput& 0& 500& 1000& 1500& 2000& 2500& ATS& NGiNX& Squid& Varnish& hBpd& RPS$/$CPU$Usage$ 0& 5000& 10000& 15000& 20000& 25000& 30000& ATS& NGiNX& Squid& Varnish& hBpd& Requests$Per$Second$ 0& 5& 10& 15& 20& 25& 30& 35& 40& ATS& NGiNX& Squid& Varnish& hBpd& Latency$ Median& 95th&
  • 38. This work is licensed under a Creative Commons Attribution 3.0 Unported License. nginx vs Event (typical) Apache - Event MPM 0 500 1000 1500 2000 nginx 0 500 1,000 1,500 2,000 Open Write Read Close Increasing concurrency Increasing concurrency
  • 39. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache - Prefork MPM 0 500 1000 1500 2000 nginx vs Prefork (typical) nginx 0 500 1,000 1,500 2,000 Open Write Read Close Increasing concurrency Increasing concurrency
  • 40. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Total req/resp time Comparison - total transaction (close) 0 500 1000 1500 2000 Prefork Worker Event nginx Increasing concurrency
  • 41. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Resp to Req. Bursts - httperf 100 ---> 20000 0.00 1.75 3.50 5.25 7.00 min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev prefork worker event nginx Increasing concurrency
  • 42. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Backend Status ➡ Dynamic Health Checks ! ➡ TCP/IP Ping ➡ OPTIONS ➡ HEAD ➡ GET @jimjag ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/} ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/} ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/} <Proxy balancer://foo/> BalancerMember http://www.example.com/ hcmethod=GET hcexpr=in_maint hcuri=/status.php BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10 BalancerMember http://www3.example.com/ hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3 BalancerMember http://www4.example.com/ </Proxy> ProxyPass "/" “balancer://foo/" ProxyPassReverse "/" “balancer://foo/"
  • 43. This work is licensed under a Creative Commons Attribution 3.0 Unported License. What’s on the horizon? ➡ Extend mod_proxy_express ➡ Adding additional protocols ➡ More dynamic configuration ➡ Adding balancers! ➡ Extend/improve caching ➡ Redis ➡ Memcache now mod_status aware ➡ Apache Geode? ➡ Performance, of course! @jimjag
  • 44. This work is licensed under a Creative Commons Attribution 3.0 Unported License. In conclusion... ➡ For cloud environs and other, the performance and dynamic control of Apache httpd 2.4 in reverse proxies is just what the Dr. ordered (and flexibility remains a big strength) @jimjag
  • 45. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Thanks @jimjag Twitter: @jimjag Emails:
 jim@jaguNET.com
 jim@apache.org
 jim.jagielski@capitalone.com http://www.slideshare.net/jimjag/