Monday, March 11, 2013

Reverse Proxy, SSL Load Balancing with Apache

On the proxy server


 

ProxyRequests Off
<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ stickysession=BALANCEID nofailover=On
ProxyPassReverse / http://localhost:82/
ProxyPassReverse / http://localhost:83/
<Proxy balancer://mycluster>
  BalancerMember http://localhost:82  route=http2
  BalancerMember http://localhost:83  route=http3
  ProxySet lbmethod=byrequests
</Proxy>
<Location /balancer-manager>
  SetHandler balancer-manager
  Order deny,allow
  Allow from all
</Location>

 On the balanced server1


RewriteEngine On
RewriteRule .* - [CO=BALANCEID:balancer.http3:.localhost:82]

 On the balanced server2


RewriteEngine On
RewriteRule .* - [CO=BALANCEID:balancer.http3:.localhost:83] 



For SSL Installation .... 

Install openssl 

openssl req -new -x509 -days 365 -nodes -out /usr/local/apache/ssl/httpd.
pem -keyout /usr/local/apache/ssl/httpd.key
Listen 443


AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl


SSLPassPhraseDialog  builtin

SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300


SSLMutex  "file:/usr/local/apache/logs/ssl_mutex"



<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "/usr/local/apache/htdocs"
ServerName vps06.langoor.it:443
ServerAdmin you@example.com
ErrorLog "/usr/local/apache/logs/error_log"
TransferLog "/usr/local/apache/logs/access_log"

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on
SSLProtocol all -SSLv2

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5


SSLCertificateFile /usr/local/apache/ssl1/httpd.pem

SSLCertificateKeyFile /usr/local/apache/ssl1/httpd.key
#SSLCertificateKeyFile "/usr/local/apache/conf/server-dsa.key"



#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>


#   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
#   "force-response-1.0" for this.
BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/usr/local/apache/logs/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>