This chapter describes how to install and configure the Apache HTTP Server plug-in. It contains the following sections:
Note:
For proxying requests from Oracle HTTP Server to Oracle WebLogic Server, use the mod_wl_ohs plug-in, which is similar to the plug-in for Apache HTTP Server, but need not be downloaded and installed separately. For information about configuring mod_wl_ohs, see Chapter 2, "Configuring the mod_wl_ohs Plug-In for Oracle HTTP Server.".
After you download the Apache HTTP Server plug-in as described in Section 1.2, "Availability of Version 1.1 Plug-Ins,", you can install it as an Apache HTTP Server module in your Apache HTTP Server installation.
Before you install the Apache HTTP Server plug-in, do the following:
Download the Apache HTTP Server plug-in, as described in Section 1.2, "Availability of Version 1.1 Plug-Ins."
Extract the plug-ins zip distribution to the location of your choice on the target system; for example, /home/myhome/weblogic-plugins-1.1/
.
Install JDK 6 if you want to use SSL. The JDK 6 installation is required to use the orapki
utility, which manages public key infrastructure (PKI) elements, such as wallets and certificate revocation lists, for use with SSL.
Make sure that you have a supported Apache HTTP Server installation.
For more information, see:
http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html
.
Make sure that a supported version of Oracle WebLogic Server is configured and running on a target system. However, it does not need to be running on the system on which you extracted the plug-in zip distribution. For the supported Oracle WebLogic Server versions, see:
http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html
.
The Apache HTTP Server 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:
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 HTTP Server.
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
.
Verify that the mod_so.c
module is enabled.
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:
Windows
APACHE_HOME\bin> apachectl -l
UNIX/Linux
> APACHE_HOME/bin/apachectl -l
(APACHE_HOME
is the directory that contains the 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 configure option is specified:
... --enable-module=so ...
Make a copy of the APACHE_HOME
/bin/httpd.conf
file for backup.
Open the httpd.conf
file.
Install the Apache HTTP Server plug-in module for Apache 2.2.x by adding the following line. For Windows, specify the .dll
file.
LoadModule weblogic_module /home/myhome/weblogic-plugins-1.1/lib/mod_wl.so
Verify the syntax of the httpd.conf
file by running the following command:
Windows
APACHE_HOME\bin> apachectl -t
UNIX/Linux
> APACHE_HOME/bin/apachectl -t
If the httpd.conf
file contains any errors, the output of this command shows the errors; otherwise, the command returns the following:
Syntax OK
This section describes how to edit the httpd.conf
file to proxy requests by path or by MIME type, to enable HTTP tunneling, and to use other Oracle WebLogic Server plug-in parameters.
Edit the httpd.conf
file in your Apache HTTP Server installation to configure the Apache HTTP Server plug-in.
Open the httpd.conf
file, if it is not already open.
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.
Example:
<IfModule mod_weblogic.c> WebLogicHost myweblogic.example.com WebLogicPort 7001 Debug ALL DebugConfigInfo ON WLLogFile /tmp/wl-proxy.log </IfModule>
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>
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 Section 7.1, "General Parameters for Web Server Plug-Ins").
The PathTrim
parameter must be configured inside the <Location>
tag. These known issues arise when you configure the Apache plug-in to use SSL
The following configuration is incorrect:
<Location /weblogic> SetHandler weblogic-handler </Location> <IfModule mod_weblogic.c> WebLogicHost localhost WebLogicPort 7001 PathTrim /weblogic </IfModule>
The following configuration is the correct setup:
<Location /weblogic> SetHandler weblogic-handler PathTrim /weblogic </Location>
The current implementation of the WebLogic Server Apache plug-in does not support the use of multiple certificate files with Apache SSL.
Optionally, enable HTTP tunneling for t3 or IIOP.
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>
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>
Define any additional parameters for the Apache HTTP Server plug-in.
The Apache HTTP Server plug-in recognizes the parameters listed in Section 7.1, "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
At global or virtual host scope, for parameters that apply to proxying by MIME type.
Verify the syntax of the httpd.conf
file by running the following command:
Windows
APACHE_HOME\bin> apachectl -t
UNIX/Linux
> APACHE_HOME/bin/apachectl -t
If the httpd.conf
file contains any errors, the output of this command shows the errors; otherwise, the command returns the following:
Syntax OK
Start the Apache HTTP Server.
Windows
APACHE_HOME\bin> httpd -k start
UNIX/Linux
> APACHE_HOME/bin/apachectl start
Send a request to http://apache-host:apache-port/mywebapp/my.jsp
from the browser. Validate the response.
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>
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 HTTP Server 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.
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.
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 4-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 4-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 4-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 4-3 shows an example without WebLogic clusters.
Example 4-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 4-4 shows an example of configuring multiple name-based virtual hosts.
Example 4-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.
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 4-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>