Friday, October 10, 2014

Reverse Proxy configuration in iPlanet Web server

A Reverse Proxy is a type of server that retrieves resources from other servers on behalf of the client. The resources are returned to the client as though they are originated from the server itself. Client feels that the resources are being provided by the server itself, and unaware of the servers that have provided the resources.Forward proxy acts as an intermediary for its clients and returns the resources accessible on the internet.Reverse proxy acts as an intermediary for the servers to return the resources provided by other servers.Reverse proxy is most widely used when you want your application accessible in the internet, without exposing the Application Servers, in other words, it is used when you want your intranet application to be accessible through internet.The proxied server may be a webserver itself, or it may be an application server using a different protocol, or an application server.


How to Configure Reverse Proxy in iPlanet?

iPlanet 7 and above versions has inbuilt proxy plugins , so no need to load any plugins or libraries.
  • Add below configuration lines in obj.conf file.
          NameTrans fn="map" from="/Revese_Proxy" name="reverse-proxy" to="http:/Revese_Proxy"
             <Object name="reverse-proxy">
                  Route fn="set-origin-server" server="http://backendserver.com"
             </Object>

            <Object ppath="http:*">
                Service fn="proxy-retrieve" method="*"
            </Object>
  • Push/ Deploy the changes in iPlanet console. No need of restart.
Note: If you have custom Custom-obj.conf file (Virtual servers) and has client configuration your  Reverse proxy configuration is as below.

Custom-obj.conf
-----------------------------------------------------
<Object name="default">
     <Client urlhost="Reverse-Proxy-server.com">
          NameTrans fn="map" from="/Revese_Proxy" name="reverse-proxy" to="http:/Revese_Proxy"
     </Client>
</Object>

<Object name="reverse-proxy">
          Route fn="set-origin-server" server="http://backendserver.com"
</Object>

<Object ppath="http:*">
          Service fn="proxy-retrieve" method="*"
</Object>

Note:  Only one ppath="http:*" is required for multiple Reverse Proxy configuration. No need to duplicate the ppath block every time.

How Reverse Proxy works ?

When request comes to iplanet let ex http://Reverse-Proxy-server.com/Revese_Proxy
  • The default object NameTrans  directive  map  attribute function will be execute and  convert the logical URL of the request to a physical path name.
NameTrans fn="map" from="/Revese_Proxy" name="reverse-proxy" to="http:/Revese_Proxy"
  • If this physical path name (http:/Revese_Proxy) matches the  Object ppath="http:*" , ppath object directive proxy-retrieve function will be execute.
             <Object ppath="http:*">
                   Service fn="proxy-retrieve" method="*"
             </Object>

  • proxy-retrieve
    • The proxy-retrieve function retrieves a information from a remote server and returns it to the client. This function also enables you to configure the server to allow or block arbitrary methods. This function only works on the HTTP protocol.
  • After execution of the ppath Object proxy-retrieve  function ,process goes to the Object name="reverse-proxy" block.
               <Object name="reverse-proxy">
                    Route fn="set-origin-server" server="http://backendserver.com"
               </Object>
  • Route fn="set-origin-server
    • Set the back end  server information where to send the request .

 Alternative ways to configure the Reverse Proxy in iPlanet

  • Below configuration works same as above one but difference is removed the name attribute in NameTrans  and added the Route function in ppath Object.
           <Object name="default">
                  <Client urlhost="Reverse-Proxy-server.com">
                        NameTrans fn="map" from="/Revese_Proxy"  to="http:/Revese_Proxy"
                  </Client>
           </Object>

          <Object ppath="http:*">
                 Service fn="proxy-retrieve" method="*"
                 Route fn="set-origin-server" server="http://backendserver.com"
         </Object>

10 comments:

  1. Hi Ram,

    if the firewall between the iPlanet Web server and the backend server is a http_proxy,

    how to configure the http_proxy information to access the remote origin servers?

    I tried and set-proxy-server and set-origin-server don't seem to work in conjunction

    Thanks

    ReplyDelete