3 Installing and Configuring the Apache HTTP Server Plug-In

The following sections describe how to install and configure the Apache HTTP Server Plug-In:

Note:

In this release of Oracle WebLogic Server, a single plug-in supports both Apache HTTP Server and Oracle HTTP Server.

Install the Apache HTTP Server Plug-In

After you have downloaded the Apache HTTP Server Plug-In, as described in Downloading the Version 1.1 Plug-Ins, you can install it as an Apache module in your Apache HTTP Server installation and link it as a Dynamic Shared Object (DSO).

A DSO is compiled as a library that is dynamically loaded by the server at runtime, and can be installed without recompiling Apache.

Installation Prerequisites

Before you install the Apache HTTP Server plug-in, you must satisfy the following prerequisites:

Installing the Apache HTTP Server Plug-In as a Dynamic Shared Object

The Apache plug-in is distributed as a shared object (.so) for Unix platforms and a DLL for Windows.

To install the Apache HTTP Server Plug-In as a dynamic shared object:

  1. Make sure that the weblogic-plugins-1.1/lib folder is included in LD_LIBRARY_PATH on Unix systems (and PATH on Windows systems). If you do not do this, you see linkage errors when starting Apache.

  2. In the location where you unzipped the downloaded plug-in file, locate lib/mod_wl.so, or lib\mod_wl.dll for windows . For example, /home/myhome/weblogic-plugins-1.1/lib/mod_wl.so.

  3. Verify that the mod_so.c module is enabled.

    The Apache HTTP Server Plug-In will be installed in your Apache HTTP Server installation as a Dynamic Shared Object (DSO).

    DSO support in Apache is based on module mod_so.c, which must be enabled before mod_wl.so is loaded.

    If you installed Apache HTTP Server using the script supplied by Apache, mod_so.c is already enabled. Verify that mod_so.c is enabled by executing the following command:

    APACHE_HOME\bin\apachectl -l

    (Where APACHE_HOME is the directory containing your Apache HTTP Server installation.)

    This command lists all enabled modules. If mod_so.c is not listed, you must rebuild your Apache HTTP Server, making sure that the following options are configured:

    ...
    --enable-module=so
    --enable-rule=SHARED_CORE
    ...
    

    See Apache 2.2 Shared Object (DSO) Support at http://httpd.apache.org/docs/2.2/dso.html.

  4. Make a copy of the ${APACHE_HOME}/bin/httpd.conf file for backup.

  5. Open the httpd.conf file.

    The file is located at APACHE_HOME/conf/httpd.conf (where APACHE_HOME is the root directory of your Apache HTTP server installation). See a sample httpd.conf file at Configure the Apache HTTP Server Plug-In.

  6. Install the Apache HTTP Server Plug-In module for Apache 2.2.x by adding the following line to your APACHE_HOME/conf/httpd.conf file. For Windows, specify the .DLL file.

    LoadModule weblogic_module    /home/myhome/weblogic-plugins-1.1/lib/mod_wl.so
    
  7. Verify the syntax of the APACHE_HOME/conf/httpd.conf file with the following command:

    APACHE_HOME\bin\apachectl -t
    

    (Where APACHE_HOME is the directory containing your Apache HTTP Server installation.)

    The output of this command reports any errors in your httpd.conf file or returns:

    Syntax OK
    

Configure the Apache HTTP Server Plug-In

After installing the plug-in in the Apache HTTP Server, configure the WebLogic Server Apache Plug-In and configure the server to use the plug-in.

This section explains how to edit the httpd.conf file to proxy requests by path or by MIME type, to enable HTTP tunneling, and to use other WebLogic Server plug-in parameters.

Editing the httpd.conf File

Edit the httpd.conf file in your Apache HTTP server installation to configure the Apache HTTP Server Plug-In.

  1. Make a copy of the ${APACHE_HOME}/bin/httpd.conf file for backup.

  2. Open the httpd.conf file.

    The file is located at APACHE_HOME/conf/httpd.conf (where APACHE_HOME is the root directory of your Apache HTTP server installation). See a sample httpd.conf file at Configure the Apache HTTP Server Plug-In.

  3. Ensure that the WebLogic Server modules are included for Apache 2.2.x. Add the following line to the httpd.conf file if you have not already done so. For Windows, specify the .DLL file.

    LoadModule weblogic_module   /home/myhome/weblogic-plugins-1.1/lib/mod_wl.so
    
  4. To proxy requests by MIME type, add an IfModule block that defines one of the following:

    • For a non-clustered WebLogic Server: the WebLogicHost and WebLogicPort parameters.

    • For a cluster of WebLogic Servers: the WebLogicCluster parameter.

    For example:

    <IfModule mod_weblogic.c>
      WebLogicHost my-weblogic-server-com
      WebLogicPort 7001
      Debug ALL
      DebugConfigInfo ON
      WLLogFile /tmp/wl-proxy.log 
    </IfModule>
    
  5. To proxy requests by MIME type, add a MatchExpression line to the IfModule block. Note that if both MIME type and proxying by path are enabled, proxying by path takes precedence over proxying by MIME type.

    For example, the following IfModule block for a non-clustered WebLogic Server specifies that all files with MIME type .jsp are proxied:

    <IfModule mod_weblogic.c>
      WebLogicHost my-weblogic.server.com
      WebLogicPort 7001
      MatchExpression *.jsp
      Debug ALL
      DebugConfigInfo ON
      WLLogFile /tmp/wl-proxy.log 
    </IfModule>
    

    You can also use multiple MatchExpressions, for example:

    <IfModule mod_weblogic.c>
      WebLogicHost my-weblogic.server.com
      WebLogicPort 7001
      MatchExpression *.jsp
       MatchExpression *.xyz
      Debug ALL
      DebugConfigInfo ON
      WLLogFile /tmp/wl-proxy.log 
    </IfModule>
    

    If you are proxying requests by MIME type to a cluster of WebLogic Servers, use the WebLogicCluster parameter instead of the WebLogicHost and WebLogicPort parameters. For example:

    <IfModule mod_weblogic.c>
      WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
      MatchExpression *.jsp
      MatchExpression *.xyz
    </IfModule>
    
  6. To proxy requests by path, use the Location block and the SetHandler statement. SetHandler specifies the handler for the Apache HTTP Server Plug-In module. For example the following Location block proxies all requests containing /weblogic in the URL:

    <Location /weblogic>
      SetHandler weblogic-handler
    PathTrim /weblogic
    </Location>
    

    The PathTrim parameter specifies a string trimmed from the beginning of the URL before the request is passed to the WebLogic Server instance (see General Parameters for Web Server Plug-Ins).

  7. Optionally, enable HTTP tunneling for t3 or IIOP.

    1. To enable HTTP tunneling if you are using the t3 protocol and weblogic.jar, add the following Location block to the httpd.conf file:

      <Location /bea_wls_internal/HTTPClnt>
        SetHandler weblogic-handler
      </Location>
      
    2. To enable HTTP tunneling if you are using the IIOP, the only protocol used by the WebLogic Server thin client, wlclient.jar, add the following Location block to the httpd.conf file:

      <Location /bea_wls_internal/iiop>
        SetHandler weblogic-handler
      </Location>
      
  8. Define any additional parameters for the Apache HTTP Server Plug-In.

    The Apache HTTP Server Plug-In recognizes the parameters listed in General Parameters for Web Server Plug-Ins. To modify the behavior of your Apache HTTP Server Plug-In, define these parameters either:

    • In a Location block, for parameters that apply to proxying by path, or

    • In an IfModule block, for parameters that apply to proxying by MIME type.

  9. Verify the syntax of the APACHE_HOME/conf/httpd.conf file with the following command:

    APACHE_HOME\bin\apachectl -t
    

    (Where APACHE_HOME is the directory containing your Apache HTTP Server installation.)

    The output of this command reports any errors in your httpd.conf file or returns:

    Syntax OK
    
  10. Start the Apache HTTP Server.

    ${APACHE_HOME}/bin/apachectl start
    

    (Where APACHE_HOME is the directory containing your Apache HTTP Server installation.)

  11. Send a request to http://apache-host:apache-port/mywebapp/my.jsp from the browser. Validate the response.

Placing WebLogic Properties Inside Location or VirtualHost Blocks

If you choose to not use the IfModule, you can instead directly place the WebLogic properties inside Location or VirtualHost blocks. Consider the following examples of the Location and VirtualHost blocks:

<Location /weblogic>
SetHandler weblogic-handler
WebLogicHost myweblogic.server.com
WebLogicPort 7001
</Location>
 
<Location /weblogic>
SetHandler weblogic-handler
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
</Location>
 
<VirtualHost apachehost:80>
SetHandler weblogic-handler
WebLogicServer weblogic.server.com
WebLogicPort 7001
</VirtualHost>

Including a weblogic.conf File in the httpd.conf File

If you want to keep several separate configuration files, you can define parameters in a separate configuration file called weblogic.conf file, by using the Apache Include directive in an IfModule block in the httpd.conf file:

<IfModule mod_weblogic.c>
  # Config file for WebLogic Server that defines the parameters
  Include conf/weblogic.conf 
</IfModule>

The syntax of weblogic.conf files is the same as that for the httpd.conf file.

This section describes how to create weblogic.conf files, and includes sample weblogic.conf files.

Creating weblogic.conf Files

Be aware of the following when constructing a weblogic.conf file.

  • Enter each parameter on a new line. Do not put '=' between a parameter and its value. For example:

    PARAM_1 value1
    PARAM_2 value2
    PARAM_3 value3
    
  • If a request matches both a MIME type specified in a MatchExpression in an IfModule block and a path specified in a Location block, the behavior specified by the Location block takes precedence.

  • If you use an Apache HTTP Server <VirtualHost> block, you must include all configuration parameters (MatchExpression, for example) for the virtual host within the <VirtualHost> block (see Apache Virtual Host documentation at http://httpd.apache.org/docs/vhosts/).

  • If you want to have only one log file for all the virtual hosts configured in your environment, you can achieve it using global properties. Instead of specifying the same Debug, WLLogFile and WLTempDir properties in each virtual host you can specify them just once in the <IfModule> tag.

  • Sample httpd.conf file:

    <IfModule mod_weblogic.c>
      WebLogicCluster johndoe02:8005,johndoe:8006
      Debug ON
      WLLogFile             c:/tmp/global_proxy.log 
      WLTempDir             "c:/myTemp"
      DebugConfigInfo       On
      KeepAliveEnabled ON
      KeepAliveSecs  15
    </IfModule>
    
    <Location /jurl>
      SetHandler weblogic-handler
      WebLogicCluster agarwalp01:7001
    </Location>
    
    <Location /web>
      SetHandler weblogic-handler
      PathTrim/web
      Debug OFF
      WLLogFile c:/tmp/web_log.log
    </Location>
     
    <Location /foo>
      SetHandler weblogic-handler
      PathTrim/foo
      Debug ERR
      WLLogFile c:/tmp/foo_proxy.log
    </Location>
    
  • All the requests which match /jurl/* will have Debug Level set to ALL and log messages will be logged to c:/tmp/global_proxy.log file. All the requests which match /web/* will have Debug Level set to OFF and no log messages will be logged. All the requests which match /foo/* will have Debug Level set to ERR and log messages will be logged to c:/tmp/foo_proxy.log file.

  • Oracle recommends that you use the MatchExpression statement instead of the <Files> block.

Sample weblogic.conf Configuration Files

The following examples of weblogic.conf files may be used as templates that you can modify to suit your environment and server. Lines beginning with # are comments.

Example 3-1 Example Using WebLogic Clusters

# These parameters are common for all URLs which are 
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks. (Except WebLogicHost,
# WebLogicPort, WebLogicCluster, and CookieName.)

<IfModule mod_weblogic.c>
  WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
  ErrorPage http://myerrorpage.mydomain.com
  MatchExpression *.jsp
</IfModule>
####################################################

In Example 3-2, the MatchExpression parameter syntax for expressing the filename pattern, the WebLogic Server host to which HTTP requests should be forwarded, and various other parameters is as follows:

MatchExpression [filename pattern] [WebLogicHost=host] | [paramName=value]

The first MatchExpression parameter below specifies the filename pattern *.jsp, and then names the single WebLogicHost. The paramName=value combinations following the pipe symbol specify the port at which WebLogic Server is listening for connection requests, and also activate the Debug option. The second MatchExpression specifies the filename pattern *.http and identifies the WebLogicCluster hosts and their ports. The paramName=value combination following the pipe symbol specifies the error page for the cluster.

Example 3-2 Example Using Multiple WebLogic Clusters

# These parameters are common for all URLs which are 
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks (Except WebLogicHost,
# WebLogicPort, WebLogicCluster, and CookieName.)

<IfModule mod_weblogic.c>
  MatchExpression *.jsp WebLogicHost=myHost|WebLogicPort=7001|Debug=ON
  MatchExpression *.html WebLogicCluster=myHost1:7282,myHost2:7283|ErrorPage=
    http://www.xyz.com/error.html
</IfModule>

Example 3-3 shows an example without WebLogic clusters.

Example 3-3 Example Without WebLogic Clusters

# These parameters are common for all URLs which are 
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks (Except WebLogicHost,
# WebLogicPort, WebLogicCluster, and CookieName.)
<IfModule mod_weblogic.c>
  WebLogicHost myweblogic.server.com
  WebLogicPort 7001
  MatchExpression *.jsp
</IfModule>

Example 3-4 shows an example of configuring multiple name-based virtual hosts.

Example 3-4 Example Configuring Multiple Name-Based Virtual Hosts

# VirtualHost1 = localhost:80
<VirtualHost 127.0.0.1:80>
DocumentRoot "C:/test/VirtualHost1"
ServerName localhost:80
<IfModule mod_weblogic.c> 
#... WLS parameter ...
WebLogicCluster localhost:7101,localhost:7201
# Example: MatchExpression *.jsp <some additional parameter>
MatchExpression *.jsp PathPrepend=/test2
</IfModule>
</VirtualHost>
 
# VirtualHost2 = 127.0.0.2:80
<VirtualHost 127.0.0.2:80>
DocumentRoot "C:/test/VirtualHost1"
ServerName 127.0.0.2:80
<IfModule mod_weblogic.c> 
#... WLS parameter ...
WebLogicCluster localhost:7101,localhost:7201
# Example: MatchExpression *.jsp <some additional parameter>
MatchExpression *.jsp PathPrepend=/test2
#... WLS parameter ...
</IfModule>
</VirtualHost>

You must define a unique value for ServerName or some Plug-In parameters will not work as expected.

Template for the Apache HTTP Server httpd.conf File

This section contains a sample httpd.conf file for Apache 2.2. You can use this sample as a template and modify it to suit your environment and server. Lines beginning with # are comments.

Note that Apache HTTP Server is not case sensitive.

Example 3-5 Sample httpd.conf file for Apache 2.2

####################################################
APACHE-HOME/conf/httpd.conf file
####################################################
LoadModule weblogic_module   lhome/myhome/weblogic-plugins-1.1/lib/mod_wl.so

<Location /weblogic>
 SetHandler weblogic-handler
 PathTrim /weblogic
 ErrorPage http://myerrorpage1.mydomain.com
</Location>

<Location /servletimages>
 SetHandler weblogic-handler
 PathTrim /something
 ErrorPage http://myerrorpage1.mydomain.com
</Location>

<IfModule mod_weblogic.c>
  MatchExpression *.jsp
  WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
  ErrorPage http://myerrorpage.mydomain.com
</IfModule>