SlideShare uma empresa Scribd logo
1 de 57
Apache httpd v2.4:
   Hello Cloud
                          Jim Jagielski




 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Introduction
 Jim Jagielski
      Longest still-active developer/contributor
      Co-founder of the ASF
      Member, Director and President
      Director: Outercurve and OSI
      Sr. Consulting Engineer with Red Hat
What we will cover

• Performance Related Enhancements
• Reverse Proxy Server Enhancements




      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4
 Currently in beta release
 Expected GA: This May!
 Significant Improvements
      high-performance
      cloud suitability


     This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4
    Support for async I/O w/o dropping support for
    older systems
    Larger selection of usable MPMs: added Event,
    Simple, etc...
    Leverages higher-performant versions of APR



   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4

    Bandwidth control now standard
    Finer control of timeouts, esp. during requests
    Controllable buffering of I/O
    Support for Lua



   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4
    Reverse Proxy Improvements
               Supports FastCGI, SCGI
               Additional load balancing mechanisms
               Runtime changing of clusters w/o restarts
               Support for dynamic configuration


   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
mod_proxy
•   An Apache module
•   Implements core proxy capability
•   Both forward and reverse proxy
•   In general, most people use it for reverse proxy
    (gateway) functionality



        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
How did we get here?
• A stroll down mod_proxy lane
   – First available in Apache 1.1
       • “Experimental Caching Proxy Server”
   – In Apache 1.2, pretty stable, but just HTTP/1.0
   – In Apache 1.3, much improved with added support
     for HTTP/1.1
   – In Apache 2.0, break out cache and proxy
   – In Apache 2.2, lay framework

      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Proxy Improvements
• Becoming a robust but generic proxy implementation
• Support various protocols
   – HTTP, HTTPS, CONNECT, FTP
   – AJP, FastCGI, SCGI, WSGI (soon)
   – Load balancing
• Clustering, failover



      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
AJP? Really?
• Yep, Apache can now talk AJP with Tomcat directly
• mod_proxy_ajp is the magic mojo
• Other proxy improvements make this even more
  exciting
• mod_jk alternative



      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
But I like mod_jk
• That’s fine, but...
   – Now the config is much easier and more
     consistent
      ProxyPass /servlets                                ajp://tc.example.com:
  8089

   – Easier when Apache needs to proxy both HTTP and
     AJP
   – Leverage improvements in proxy module


      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Features of Proxy Server
• Performance
• Monitoring
• Filtering
• Caching (with mod_cache)




      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy
          • Operated at the server end of the transaction

          • Completely transparent to the Web Browser – thinks the Reverse
            Proxy Server is the real server
                                        Reverse Proxy Server



              Internet                                                                      Cloud

Browser

                         Firewall                                    Firewall                          Transactional
                                                                                                          Servers



                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Features of Reverse Proxy
• Security
   – Uniform security policy can be administered
   – The real transactional servers are behind the
     firewall
• Delegation, Specialization, Load Balancing



      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




      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy Directives:
• Allows remote server to be mapped into the space of
  the local (Reverse Proxy) server
• Example:
   – ProxyPass /secure/ http://secureserver/

   – Presumably “secureserver” is inaccessible directly
     from the internet


      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy Directives:
• 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/



       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
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Baby got back
• We need more backend servers
• And balance the load between them
• Before 2.2, mod_rewrite was your only option
• Some people would prefer spending an evening with
  an Life Insurance salesman rather than deal with
  mod_rewrite


      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancer
• mod_proxy_balancer.so

• mod_proxy can do native load balancing

   – weight by actual requests

   – weight by traffic

   – weight by busyness

   – lbfactors

       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancer

• LB algorithms are implemented as providers

    – easy to add

    – no core code changes required

    – growing list of methods




        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancer
• 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


        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Pooling example
<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.
Load Balancer
 • Sticky session support
    – aka “session affinity”
 • Cookie based
    – stickysession=PHPSESSID
    – stickysession=JSESSIONID
 • Natively easy with Tomcat
 • May require more setup for “simple” HTTP proxying

      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancer
• 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



       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Example
<Proxy balancer://foo>

  BalancerMember http://php1:8080/                              loadfactor=1

  BalancerMember http://php2:8080/                              loadfactor=4

  BalancerMember http://phpbkup:8080/ loadfactor=4 status=+h

  BalancerMember http://offsite1:8080/ lbset=1

  BalancerMember http://offsite2:8080/ lbset=1

  ProxySet lbmethod=bytraffic

</Proxy>

ProxyPass /apps/ balancer://foo/




           This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Embedded Admin
• Allows for real-time
   – Monitoring of stats for each worker
   – Adjustment of worker params
       • lbset

       • load factor

       • route

       • enabled / disabled

       • ...

      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

      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Easy setup
<Location /balancer-manager>

  SetHandler balancer-manager

  Order Deny,Allow

  Deny from all

  Allow from 192.168.2.22

</Location>




       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




  This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




  This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin



                                               Changing the
                                                LBmethod

                                                                       Adding new worker




  This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




  This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some tuning params
• For workers:
   – loadfactor
      • normalized load for worker [1]

   – lbset
      • worker cluster number [0]

   – retry
      • retry timeout, in seconds, for failed workers [60]

      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some tuning params
  • For workers - connection pool:
        – min
                • Initial number of connections [0]

        – max
                • Hard maximum number of connections [1|TPC]

        – smax:
                • soft max - keep this number available [max]

                • time to live for connections above smax
   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some tuning params
  • For workers - connection pool:
        – disablereuse:
                • bypass the connection pool

        – ttl
                • time to live for connections above smax




   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some tuning params
For workers (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
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some tuning params
  For workers (cont):
      – status (+/-)
          • D : disabled
          • S : Stopped
          • I : Ignore errors
          • H : Hot standby
          • E : Error
   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some tuning params
 For balancers:
     – lbmethod
         • load balancing algo to use [byrequests]
     – stickysession
         • sticky session name (eg: PHPSESSIONID)
     – maxattempts
         • failover tries before we bail
    – Nofailover
            • Back-ends don't support failover so don't send session when failing over
    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Recent improvements
• ProxyPassMatch
   – ProxyPass can now take regex’s instead of just
     “paths”
        • ProxyPassMatch ^(/.*.gif)$ http://
          backend.example.com$1

   – JkMount migration
• Or
   –   ProxyPass ~ ^(/.*.gif)$ http://backend.example.com$1


• mod_rewrite is balancer aware

        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Recent improvements
• ProxyPassReverse is NOW balancer aware!
• The below will work:

<Proxy balancer://foo>
  BalancerMember http://php1:8080/                                     loadfactor=1
  BalancerMember http://php2:8080/                                     loadfactor=4
</Proxy>


ProxyPass /apps/ balancer://foo/


ProxyPassReverse /apps balancer://foo/


       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Useful Envars
• BALANCER_SESSION_STICKY
  – This is assigned the stickysession value used in the current request. It is
    the cookie or parameter name used for sticky sessions
• BALANCER_SESSION_ROUTE
  – This is assigned the route parsed from the current request.
• BALANCER_NAME
  – This is assigned the name of the balancer used for the current request. The
    value is something like balancer://foo.




       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Useful Envars
•   BALANCER_WORKER_NAME
     – This is assigned the name of the worker used for the current request. The value is
       something like
                     http://hostA:1234.

•   BALANCER_WORKER_ROUTE
     – This is assigned the route of the worker that will be used for the current request.
•   BALANCER_ROUTE_CHANGED
     – This is set to 1 if the session route does not match the worker route
       (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE) or the session does
       not yet have an established route. This can be used to determine when/if the client
       needs to be sent an updated route when sticky sessions are used.



          This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Putting it all together
   <Proxy balancer://foo>

     BalancerMember http://php1:8080/                          loadfactor=1

     BalancerMember http://php2:8080/                          loadfactor=4

     BalancerMember http://phpbkup:8080/                       loadfactor=4 status=+h

     BalancerMember http://phpexp:8080/                        lbset=1

     ProxySet lbmethod=bytraffic

   </Proxy>

   <Proxy balancer://javaapps>

     BalancerMember ajp://tc1:8089/                         loadfactor=1

     BalancerMember ajp://tc2:8089/                         loadfactor=4

     ProxySet lbmethod=byrequests

   </Proxy>
   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Putting it all together


 ProxyPass /apps/ balancer://foo/

 ProxyPass /serv/ balancer://javaapps/

 ProxyPass /images/ http://images:8080/




      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Manipulating HTTP Headers:

• Modify HTTP request and response headers

    – Can be used in Main server, Vhost, Directory, Location, Files sections

    – Headers can be merged, replaced or removed

    – Pass on client-specific data to the backend server

         • IP Address, Request scheme (HTTP, HTTPS), UserAgent, SSL connection
           info, etc.



          This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Manipulating HTTP Headers:

• Shield backend server’s info from the clients

     – Strip out Server name

     – Server IP address

     – etc.




           This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Header examples
• Copy all request headers that begin with “TS” to response headers

    – Header echo ^TS

• Say hello to Joe

    – Header add JoeHeader “Hello Joe!”

• If header “MyRequestHeader: value” is present, response will contain
  “MyHeader” header:

    – SetEnvIf MyRequestHeader value HAVE_MyRequestHeader

    – Header add MyHeader “%D %t mytext” env=HAVE_MyRequestHeader


         This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Header examples
• Remember, sequence is important! Following will
  result in “MHeader” to be stipped from the response:
   – RequestHeader append MyHeader “value1”
   – RequestHeader append MyHeader “value2”
   – RequestHeader unset MyHeader



      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Example:
 • Pass additional info about Client Browsers to the App Server:
    ProxyPass / http://backend.covalent.net

    ProxyPassReverse / http://backend.covalent.net

    RequestHeader set X-Forwarded-IP %{REMOTE_ADDR}e

    RequestHeader set X-Request-Scheme %{REQUEST_SCHEME}e


 • App Server receives the following HTTP
   headers:

     – X-Forwarded-IP: 10.0.0.3

     – X-Request-Scheme: https
     This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Using mod-rewrite example
   # mod_proxy lb example using request parameter

   RewriteEngine On



   # Use mod_rewrite to insert a node name into the url

   RewriteCond %{QUERY_STRING} accountId=.*([0-2])b

   RewriteRule ^/sampleApp/(.*) balancer://tc1/$1 [P]



   RewriteCond %{QUERY_STRING} accountId=.*([3-6])b

   RewriteRule ^/sampleApp/(.*) balancer://tc2/$1 [P]



   RewriteCond %{QUERY_STRING} accountId=.*([7-9])b

   RewriteRule ^/sampleApp/(.*) balancer://tc3/$1 [P]



   # No ID - round robin to all nodes

   ProxyPass /sampleApp/ balancer://all/
   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Using mod-rewrite example
<Proxy balancer://tc1>

  # Default worker for this balancer

  BalancerMember http://linux6401.dev.local:8080/sampleApp lbset=1



  # Backup balancers for node failure - used in round robin

  # no stickyness

  BalancerMember http://linux6402.dev.local:8081/sampleApp lbset=1 status=H

  BalancerMember http://linux6403.dev.local:8081/sampleApp lbset=1 status=H



  # Maintenance balancer used to re-route traffic for upgrades etc

  BalancerMember http://linux6404.dev.local:8080/sampleApp status=D

</Proxy>




           This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Using mod-rewrite example
<Proxy balancer://tc2>

  BalancerMember http://linux6402.dev.local:8080/sampleApp lbset=1



  # Backup balancers for node failure - used in round robin

  # no stickyness

  BalancerMember http://linux6401.dev.local:8081/sampleApp lbset=1 status=H

  BalancerMember http://linux6403.dev.local:8081/sampleApp lbset=1 status=H



  # Maintenance balancer used to re-route traffic for upgrades etc

  BalancerMember http://linux6404.dev.local:8080/sampleApp status=D

</Proxy>




             This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Using mod-rewrite example
<Proxy balancer://tc3>

  BalancerMember http://linux6403.dev.local:8080/sampleApp lbset=1

  # Backup balancers for node failure - used in round robin

  # no stickyness

  BalancerMember http://linux6401.dev.local:8081/sampleApp lbset=1 status=H

  BalancerMember http://linux6402.dev.local:8081/sampleApp lbset=1 status=H



  # Maintenance balancer used to re-route traffic for upgrades etc

  BalancerMember http://linux6404.dev.local:8080/sampleApp status=D

</Proxy>




                This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Using mod-rewrite example
<Proxy balancer://all>

  BalancerMember http://linux6401:8080/sampleApp

  BalancerMember http://linux6402:8080/sampleApp

  BalancerMember http://linux6403:8080/sampleApp

</Proxy>



<Location /balancer-manager>

  SetHandler balancer-manager

  Order deny,allow

  Deny from all

  Allow from .dev.local

</Location>




           This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s on the horizon?
• Improving AJP
• Adding additional protocols
• mass_vhost like clusters/proxies
• More dynamic configuration




      This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Mais conteúdo relacionado

Mais procurados

KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...KubeAcademy
 
青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes 青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes Zhichao Liang
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx InternalsJoshua Zhu
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStackSean Chang
 
Load Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterLoad Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterKevin Jones
 
Introduction to Haproxy
Introduction to HaproxyIntroduction to Haproxy
Introduction to HaproxyShaopeng He
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014bryan_call
 
Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!Trygve Vea
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusKevin Jones
 
Openstack Networking Internals - first part
Openstack Networking Internals - first partOpenstack Networking Internals - first part
Openstack Networking Internals - first partlilliput12
 
OpenStack networking
OpenStack networkingOpenStack networking
OpenStack networkingSim Janghoon
 
NGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX, Inc.
 
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTPAltitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTPFastly
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICSource Conference
 
Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversBrent Salisbury
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUICShuya Osaki
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyJim Jagielski
 
Anatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoortersAnatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoortersSadique Puthen
 

Mais procurados (20)

KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
 
青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes 青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx Internals
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStack
 
Load Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterLoad Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS Cluster
 
Introduction to Haproxy
Introduction to HaproxyIntroduction to Haproxy
Introduction to Haproxy
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014
 
Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX Plus
 
Openstack Networking Internals - first part
Openstack Networking Internals - first partOpenstack Networking Internals - first part
Openstack Networking Internals - first part
 
OpenStack networking
OpenStack networkingOpenStack networking
OpenStack networking
 
NGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX: High Performance Load Balancing
NGINX: High Performance Load Balancing
 
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTPAltitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUIC
 
Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan Drivers
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
 
Squid Server
Squid ServerSquid Server
Squid Server
 
Anatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoortersAnatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoorters
 
Reactive server with netty
Reactive server with nettyReactive server with netty
Reactive server with netty
 

Destaque

Dr Rosanne Hawarden's thesis on the networks of men and women board directors
Dr Rosanne Hawarden's thesis on the networks of men and women board directorsDr Rosanne Hawarden's thesis on the networks of men and women board directors
Dr Rosanne Hawarden's thesis on the networks of men and women board directorsRosanne Hawarden
 
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
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"Jim Jagielski
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF SponsorshipJim Jagielski
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011Jim 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
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source ProjectsJim Jagielski
 
Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache WayJim Jagielski
 
Three Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic NumberJim Jagielski
 
Three Shall Be The Number
Three Shall Be The NumberThree Shall Be The Number
Three Shall Be The NumberJim Jagielski
 
Open Source - Not just for IT anymore
Open Source - Not just for IT anymoreOpen Source - Not just for IT anymore
Open Source - Not just for IT anymoreJim Jagielski
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source LicensesJim Jagielski
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and CommunitiesJim Jagielski
 
Apache State of the Feather 2010
Apache State of the Feather 2010Apache State of the Feather 2010
Apache State of the Feather 2010Jim Jagielski
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source ManagementJim 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
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The FeatherJim Jagielski
 
Drupal Camp Balto 2015
Drupal Camp Balto 2015Drupal Camp Balto 2015
Drupal Camp Balto 2015Jim Jagielski
 

Destaque (20)

Reverse proxy
Reverse proxyReverse proxy
Reverse proxy
 
Proxy Servers
Proxy ServersProxy Servers
Proxy Servers
 
Dr Rosanne Hawarden's thesis on the networks of men and women board directors
Dr Rosanne Hawarden's thesis on the networks of men and women board directorsDr Rosanne Hawarden's thesis on the networks of men and women board directors
Dr Rosanne Hawarden's thesis on the networks of men and women board directors
 
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
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF Sponsorship
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011
 
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!
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source Projects
 
Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache Way
 
Three Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic Number
 
Three Shall Be The Number
Three Shall Be The NumberThree Shall Be The Number
Three Shall Be The Number
 
Open Source - Not just for IT anymore
Open Source - Not just for IT anymoreOpen Source - Not just for IT anymore
Open Source - Not just for IT anymore
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source Licenses
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and Communities
 
Apache State of the Feather 2010
Apache State of the Feather 2010Apache State of the Feather 2010
Apache State of the Feather 2010
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source Management
 
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
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The Feather
 
Drupal Camp Balto 2015
Drupal Camp Balto 2015Drupal Camp Balto 2015
Drupal Camp Balto 2015
 

Semelhante a Apache httpd 2.4 Reverse Proxy

Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemApache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemJim Jagielski
 
Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016Jim Jagielski
 
Apache httpd 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overviewJim Jagielski
 
Apache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden GemApache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden GemJim Jagielski
 
Using aphace-as-proxy-server
Using aphace-as-proxy-serverUsing aphace-as-proxy-server
Using aphace-as-proxy-serverHARRY CHAN PUTRA
 
Web Server Load Balancer
Web Server Load BalancerWeb Server Load Balancer
Web Server Load BalancerMobME Technical
 
What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24Jim Jagielski
 
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
Nginx A High Performance Load Balancer, Web Server & Reverse ProxyNginx A High Performance Load Balancer, Web Server & Reverse Proxy
Nginx A High Performance Load Balancer, Web Server & Reverse ProxyAmit Aggarwal
 
haproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfhaproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfPawanVerma628806
 
Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011Rich Bowen
 
AJAX for Scalability
AJAX for ScalabilityAJAX for Scalability
AJAX for ScalabilityTuenti
 
Ajax For Scalability
Ajax For ScalabilityAjax For Scalability
Ajax For Scalabilityerikschultink
 
Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010Rich Bowen
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...Edward Burns
 

Semelhante a Apache httpd 2.4 Reverse Proxy (20)

Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemApache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
 
Reverse proxy magic
Reverse proxy magicReverse proxy magic
Reverse proxy magic
 
Apache httpd v2.4
Apache httpd v2.4Apache httpd v2.4
Apache httpd v2.4
 
Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016
 
Apache httpd 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overview
 
Apache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden GemApache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden Gem
 
slides (PPT)
slides (PPT)slides (PPT)
slides (PPT)
 
Using aphace-as-proxy-server
Using aphace-as-proxy-serverUsing aphace-as-proxy-server
Using aphace-as-proxy-server
 
Web Server Load Balancer
Web Server Load BalancerWeb Server Load Balancer
Web Server Load Balancer
 
Think async
Think asyncThink async
Think async
 
What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24
 
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
Nginx A High Performance Load Balancer, Web Server & Reverse ProxyNginx A High Performance Load Balancer, Web Server & Reverse Proxy
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
 
haproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfhaproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdf
 
HAProxy
HAProxy HAProxy
HAProxy
 
Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011
 
AJAX for Scalability
AJAX for ScalabilityAJAX for Scalability
AJAX for Scalability
 
Ajax For Scalability
Ajax For ScalabilityAjax For Scalability
Ajax For Scalability
 
Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
5-WebServers.ppt
5-WebServers.ppt5-WebServers.ppt
5-WebServers.ppt
 

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
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web serverJim Jagielski
 
Apache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatApache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatJim 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: 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
 
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
 
Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licensesJim 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
 

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
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web server
 
Apache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatApache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and Tomcat
 
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: 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
 
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
 
Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licenses
 
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
 

Último

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Último (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

Apache httpd 2.4 Reverse Proxy

  • 1. Apache httpd v2.4: Hello Cloud Jim Jagielski This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 2. Introduction Jim Jagielski Longest still-active developer/contributor Co-founder of the ASF Member, Director and President Director: Outercurve and OSI Sr. Consulting Engineer with Red Hat
  • 3. What we will cover • Performance Related Enhancements • Reverse Proxy Server Enhancements This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 4. Apache httpd 2.4 Currently in beta release Expected GA: This May! Significant Improvements high-performance cloud suitability This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 5. Apache httpd 2.4 Support for async I/O w/o dropping support for older systems Larger selection of usable MPMs: added Event, Simple, etc... Leverages higher-performant versions of APR This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 6. Apache httpd 2.4 Bandwidth control now standard Finer control of timeouts, esp. during requests Controllable buffering of I/O Support for Lua This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 7. Apache httpd 2.4 Reverse Proxy Improvements Supports FastCGI, SCGI Additional load balancing mechanisms Runtime changing of clusters w/o restarts Support for dynamic configuration This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 8. mod_proxy • An Apache module • Implements core proxy capability • Both forward and reverse proxy • In general, most people use it for reverse proxy (gateway) functionality This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 9. How did we get here? • A stroll down mod_proxy lane – First available in Apache 1.1 • “Experimental Caching Proxy Server” – In Apache 1.2, pretty stable, but just HTTP/1.0 – In Apache 1.3, much improved with added support for HTTP/1.1 – In Apache 2.0, break out cache and proxy – In Apache 2.2, lay framework This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 10. Proxy Improvements • Becoming a robust but generic proxy implementation • Support various protocols – HTTP, HTTPS, CONNECT, FTP – AJP, FastCGI, SCGI, WSGI (soon) – Load balancing • Clustering, failover This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 11. AJP? Really? • Yep, Apache can now talk AJP with Tomcat directly • mod_proxy_ajp is the magic mojo • Other proxy improvements make this even more exciting • mod_jk alternative This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 12. But I like mod_jk • That’s fine, but... – Now the config is much easier and more consistent ProxyPass /servlets ajp://tc.example.com: 8089 – Easier when Apache needs to proxy both HTTP and AJP – Leverage improvements in proxy module This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 13. Features of Proxy Server • Performance • Monitoring • Filtering • Caching (with mod_cache) This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 14. Reverse Proxy • Operated at the server end of the transaction • Completely transparent to the Web Browser – thinks the Reverse Proxy Server is the real server Reverse Proxy Server Internet Cloud Browser Firewall Firewall Transactional Servers This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 15. Features of Reverse Proxy • Security – Uniform security policy can be administered – The real transactional servers are behind the firewall • Delegation, Specialization, Load Balancing This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 16. Configuring Reverse Proxy • Set ProxyRequests Off • Apply ProxyPass, ProxyPassReverse and possibly RewriteRule directives This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 17. Reverse Proxy Directives: • Allows remote server to be mapped into the space of the local (Reverse Proxy) server • Example: – ProxyPass /secure/ http://secureserver/ – Presumably “secureserver” is inaccessible directly from the internet This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 18. Reverse Proxy Directives: • 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/ This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 19. 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 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 20. Baby got back • We need more backend servers • And balance the load between them • Before 2.2, mod_rewrite was your only option • Some people would prefer spending an evening with an Life Insurance salesman rather than deal with mod_rewrite This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 21. Load Balancer • mod_proxy_balancer.so • mod_proxy can do native load balancing – weight by actual requests – weight by traffic – weight by busyness – lbfactors This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 22. Load Balancer • LB algorithms are implemented as providers – easy to add – no core code changes required – growing list of methods This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 23. Load Balancer • 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 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 24. Pooling example <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.
  • 25. Load Balancer • Sticky session support – aka “session affinity” • Cookie based – stickysession=PHPSESSID – stickysession=JSESSIONID • Natively easy with Tomcat • May require more setup for “simple” HTTP proxying This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 26. Load Balancer • 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 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 27. Example <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 BalancerMember http://phpbkup:8080/ loadfactor=4 status=+h BalancerMember http://offsite1:8080/ lbset=1 BalancerMember http://offsite2:8080/ lbset=1 ProxySet lbmethod=bytraffic </Proxy> ProxyPass /apps/ balancer://foo/ This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 28. Embedded Admin • Allows for real-time – Monitoring of stats for each worker – Adjustment of worker params • lbset • load factor • route • enabled / disabled • ... This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 29. Embedded Admin • Allows for real-time • Addition of new workers/nodes • Change of LB methods • Can be persistent • More RESTful • Can be CLI-driven This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 30. Easy setup <Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow Deny from all Allow from 192.168.2.22 </Location> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 31. Admin This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 32. Admin This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 33. Admin Changing the LBmethod Adding new worker This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 34. Admin This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 35. Some tuning params • For workers: – loadfactor • normalized load for worker [1] – lbset • worker cluster number [0] – retry • retry timeout, in seconds, for failed workers [60] This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 36. Some tuning params • For workers - connection pool: – min • Initial number of connections [0] – max • Hard maximum number of connections [1|TPC] – smax: • soft max - keep this number available [max] • time to live for connections above smax This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 37. Some tuning params • For workers - connection pool: – disablereuse: • bypass the connection pool – ttl • time to live for connections above smax This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 38. Some tuning params For workers (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 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 39. Some tuning params For workers (cont): – status (+/-) • D : disabled • S : Stopped • I : Ignore errors • H : Hot standby • E : Error This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 40. Some tuning params For balancers: – lbmethod • load balancing algo to use [byrequests] – stickysession • sticky session name (eg: PHPSESSIONID) – maxattempts • failover tries before we bail – Nofailover • Back-ends don't support failover so don't send session when failing over This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 41. Recent improvements • ProxyPassMatch – ProxyPass can now take regex’s instead of just “paths” • ProxyPassMatch ^(/.*.gif)$ http:// backend.example.com$1 – JkMount migration • Or – ProxyPass ~ ^(/.*.gif)$ http://backend.example.com$1 • mod_rewrite is balancer aware This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 42. Recent improvements • ProxyPassReverse is NOW balancer aware! • The below will work: <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 </Proxy> ProxyPass /apps/ balancer://foo/ ProxyPassReverse /apps balancer://foo/ This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 43. Useful Envars • BALANCER_SESSION_STICKY – This is assigned the stickysession value used in the current request. It is the cookie or parameter name used for sticky sessions • BALANCER_SESSION_ROUTE – This is assigned the route parsed from the current request. • BALANCER_NAME – This is assigned the name of the balancer used for the current request. The value is something like balancer://foo. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 44. Useful Envars • BALANCER_WORKER_NAME – This is assigned the name of the worker used for the current request. The value is something like http://hostA:1234. • BALANCER_WORKER_ROUTE – This is assigned the route of the worker that will be used for the current request. • BALANCER_ROUTE_CHANGED – This is set to 1 if the session route does not match the worker route (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE) or the session does not yet have an established route. This can be used to determine when/if the client needs to be sent an updated route when sticky sessions are used. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 45. Putting it all together <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 BalancerMember http://phpbkup:8080/ loadfactor=4 status=+h BalancerMember http://phpexp:8080/ lbset=1 ProxySet lbmethod=bytraffic </Proxy> <Proxy balancer://javaapps> BalancerMember ajp://tc1:8089/ loadfactor=1 BalancerMember ajp://tc2:8089/ loadfactor=4 ProxySet lbmethod=byrequests </Proxy> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 46. Putting it all together ProxyPass /apps/ balancer://foo/ ProxyPass /serv/ balancer://javaapps/ ProxyPass /images/ http://images:8080/ This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 47. Manipulating HTTP Headers: • Modify HTTP request and response headers – Can be used in Main server, Vhost, Directory, Location, Files sections – Headers can be merged, replaced or removed – Pass on client-specific data to the backend server • IP Address, Request scheme (HTTP, HTTPS), UserAgent, SSL connection info, etc. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 48. Manipulating HTTP Headers: • Shield backend server’s info from the clients – Strip out Server name – Server IP address – etc. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 49. Header examples • Copy all request headers that begin with “TS” to response headers – Header echo ^TS • Say hello to Joe – Header add JoeHeader “Hello Joe!” • If header “MyRequestHeader: value” is present, response will contain “MyHeader” header: – SetEnvIf MyRequestHeader value HAVE_MyRequestHeader – Header add MyHeader “%D %t mytext” env=HAVE_MyRequestHeader This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 50. Header examples • Remember, sequence is important! Following will result in “MHeader” to be stipped from the response: – RequestHeader append MyHeader “value1” – RequestHeader append MyHeader “value2” – RequestHeader unset MyHeader This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 51. Example: • Pass additional info about Client Browsers to the App Server: ProxyPass / http://backend.covalent.net ProxyPassReverse / http://backend.covalent.net RequestHeader set X-Forwarded-IP %{REMOTE_ADDR}e RequestHeader set X-Request-Scheme %{REQUEST_SCHEME}e • App Server receives the following HTTP headers: – X-Forwarded-IP: 10.0.0.3 – X-Request-Scheme: https This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 52. Using mod-rewrite example # mod_proxy lb example using request parameter RewriteEngine On # Use mod_rewrite to insert a node name into the url RewriteCond %{QUERY_STRING} accountId=.*([0-2])b RewriteRule ^/sampleApp/(.*) balancer://tc1/$1 [P] RewriteCond %{QUERY_STRING} accountId=.*([3-6])b RewriteRule ^/sampleApp/(.*) balancer://tc2/$1 [P] RewriteCond %{QUERY_STRING} accountId=.*([7-9])b RewriteRule ^/sampleApp/(.*) balancer://tc3/$1 [P] # No ID - round robin to all nodes ProxyPass /sampleApp/ balancer://all/ This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 53. Using mod-rewrite example <Proxy balancer://tc1> # Default worker for this balancer BalancerMember http://linux6401.dev.local:8080/sampleApp lbset=1 # Backup balancers for node failure - used in round robin # no stickyness BalancerMember http://linux6402.dev.local:8081/sampleApp lbset=1 status=H BalancerMember http://linux6403.dev.local:8081/sampleApp lbset=1 status=H # Maintenance balancer used to re-route traffic for upgrades etc BalancerMember http://linux6404.dev.local:8080/sampleApp status=D </Proxy> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 54. Using mod-rewrite example <Proxy balancer://tc2> BalancerMember http://linux6402.dev.local:8080/sampleApp lbset=1 # Backup balancers for node failure - used in round robin # no stickyness BalancerMember http://linux6401.dev.local:8081/sampleApp lbset=1 status=H BalancerMember http://linux6403.dev.local:8081/sampleApp lbset=1 status=H # Maintenance balancer used to re-route traffic for upgrades etc BalancerMember http://linux6404.dev.local:8080/sampleApp status=D </Proxy> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 55. Using mod-rewrite example <Proxy balancer://tc3> BalancerMember http://linux6403.dev.local:8080/sampleApp lbset=1 # Backup balancers for node failure - used in round robin # no stickyness BalancerMember http://linux6401.dev.local:8081/sampleApp lbset=1 status=H BalancerMember http://linux6402.dev.local:8081/sampleApp lbset=1 status=H # Maintenance balancer used to re-route traffic for upgrades etc BalancerMember http://linux6404.dev.local:8080/sampleApp status=D </Proxy> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 56. Using mod-rewrite example <Proxy balancer://all> BalancerMember http://linux6401:8080/sampleApp BalancerMember http://linux6402:8080/sampleApp BalancerMember http://linux6403:8080/sampleApp </Proxy> <Location /balancer-manager> SetHandler balancer-manager Order deny,allow Deny from all Allow from .dev.local </Location> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 57. What’s on the horizon? • Improving AJP • Adding additional protocols • mass_vhost like clusters/proxies • More dynamic configuration This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. Note that &amp;#x201C;support&amp;#x201D; at times was added in mid version... like http/1.1 in 1.3.12 or so\n
  10. \n
  11. \n
  12. \n
  13. Performance: Proxy Servers often make better web clients than many browsers, in terms of their ability to formulate requests and process the results. An average page often requires 10-15 requests to download completely; a browser is generally good at handling data from about 4-6 requests at once\n\nMonitoring: Proxy Servers keep logs, which can be analyzed for access behavior of the connected web browsers.\n\nFiltering: Proxy Servers can say &amp;#x201C;no&amp;#x201D; to requests deemed unacceptable. Rules for forbidding access to objectionable websites can be implemented.\n
  14. \n
  15. Delegation, Specialization and Load Balancing: The server-side proxy can integrate content from multiple servers and present it as if a single server were handling all the requests. For instance, all images could be handled by a server running a light-weight binary optimized to handle static content. Or you may choose to host your site on an array of small servers, with the requests load-balanced among them\n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. Note disablereuse\n
  37. Note disablereuse\n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n