You can connect Adobe ColdFusion to the built-in web server and to external web servers, such as Apache, IIS, and Sun ONE Web Server (formerly known as iPlanet).
The web server is a critical component in your ColdFusion environment, and understanding how ColdFusion interacts with web servers can help you administer your site. ColdFusion provides the following web server options:
- Built-in web server A Coyote is Tomcat's HTTP Connector component that supports the HTTP 1.1 protocol for the web server or application container. Coyote listens for incoming connections on a specific TCP port on the server and forwards the request to the Tomcat Engine. Tomcat Engine processes the request and send back a response to the requesting client. For more information, see Using the built-in web server.
- External web server A customized web server connector module that forwards requests for ColdFusion pages from an external web server to ColdFusion. For more information, see Using an external web server.
The ColdFusion server configuration is built on top of Tomcat, also called the built-in web server. The built-in web server is useful in the following cases:
- Coexistence/transition The built-in web server lets you run a previous version of ColdFusion (using an external web server) and ColdFusion (using the built-in web server) on the same computer while you migrate your existing applications to ColdFusion.
Development If your workstation runs ColdFusion but does not run an external web server, you can still develop and test ColdFusion applications locally through the built-in web server. All web servers listen on a TCP/IP port, which you can specify in the URL. By default, web servers listen for HTTP requests on port 80 (for example, http://www.adobe.com and http://www.adobe.com:80 are the same). Similarly, port 443 is the default port for https requests.By default in the server configuration, the built-in web server listens on port 8500. For example, to access the ColdFusion Administrator through the built-in web server, specify http://_servername_:8500/CFIDE/administrator/index.cfm.
Whenever possible, configure your external web server as part of the ColdFusion installation, except for the two cases mentioned previously (coexistence with a previous ColdFusion version, and when the computer has no web server). If you select the built-in web server by mistake, run the Web Server Configuration Tool manually to configure your external web server after the installation. For information about the Web Server Configuration Tool, see Web server configuration.If you enable the built-in web server during the installation process and the port is already in use, the installer automatically finds the next-highest available port and configures the built-in web server to use that port. To determine the port number used by the built-in web server, open the cf_root/runtime/conf/server.xml file in a text editor and examine the port attribute of the connector. For example, <Connector port="8504" protocol="org.apache.coyote.http11.Http11Protocol>.Keep in mind the following when using the built-in web server:
- The default web root when using the built-in web server is cf_root/cfusion/wwwroot (server configuration). By default, the ColdFusion Administrator (CFIDE directory) is under this web root.
If you want the built-in web server to serve pages from a different web root directory, define a virtual mapping in the cf_root/cfusion/runtime/conf/server.xml file. Search for the string, "To add virtual directory." Uncomment the entry context path below. To add a virtual directory, add the aliases attribute as shown below:
<Context path="/" docBase="<absolute_path_to_CF_install_directory>\wwwroot" WorkDir="<cf_home>\runtime\conf\Catalina\localhost\tmp" aliases="/path1=<absolute_path_to_directory1>,/path2=<absolute_path_to_directory2>"></Context>
If you have CFML pages under your external web server's root, ensure that ColdFusion is configured to serve these pages through the external web server. If you did not configure ColdFusion_ to use an external web server, your external web server serves ColdFusion Markup Language (CFML) source code for ColdFusion pages saved under its web root._
ColdFusion uses the Tomcat web server connector to forward requests from an external web server to the ColdFusion runtime system.
When a request is made for a CFM page, the connector on the web server opens a network connection to the Tomcat proxy service. The ColdFusion runtime system handles the request and sends its response back through the proxy service and connector. The web server connector uses web-server-specific plug-in modules, as the following table describes:
The Web Server Configuration Tool adds the following elements to the Apache httpd.conf file:
The Web Server Configuration Tool adds the following elements at either the global level (default) or website level:
Sun ONE Web Server
The Web Server Configuration Tool adds the following elements to Sun ONE Web Server configuration files:
Note that the connector needs to be re-configured, if new sites are added after the connector has been configured with the 'All Sites' option in IIS.
ColdFusion uses the Web Server Configuration Tool to configure an external web server with the modules and settings that the connector requires connect to ColdFusion. You can run the Web Server Configuration Tool through either the command-line interface or the graphical user interface (GUI). In either case, the Web Server Configuration Tool configures your external web server to interact with a ColdFusion server.
The Web Server Configuration Tool includes a GUI mode, which you can use to specify external web server configuration settings through a graphical interface.
When you use the Web Server Configuration Tool in GUI mode, select the Configure Web Server for ColdFusion Applications check box.
(Optional) The web server connector does not serve static content (such as HTML files and images) from the built-in web server's root directory. If your ColdFusion web application has an empty context root and you want to serve pages from the built-in web server's root directory, you can create a web server mapping to the corresponding directory under the built-in web server.
The following table describes the options:
Specifies the web server, as follows:
The web server name you supply is not case sensitive.
Specifies the path to the configuration directory (SunONE config).
Specifies the IIS website name (case-sensitive). Specify All or 0 to configure the connector at a global level, which applies to all IIS websites.
Specifies the ColdFusion server address. The default value is localhost.
Specifies not to restart the web server.
Specifies the Tomcat cluster name. Use this option to define a connection to a Tomcat cluster instead of a single server.
Enables verbose logging for the connector.
Upgrades existing configured connectors with newer modules from a newer wsconfig.jar file.
Specifies the Apache Windows service name. The default value is Apache.
Specifies the path to the Apache server binary file (apache.exe in Windows, httpd on UNIX).
Specifies the path to the Apache UNIX control script file (apachectl, but slightly different with certain Apache variants, such as Stronghold).
Enables verbose output from the Web Server Configuration Tool.
Lists all configured web servers.
-list -host server-host
Lists all Tomcat servers on the specified host.
Removes a configuration. Requires the ws and either the dir or site options.
Removes all configured connectors.
Lists all parameters.
The ColdFusion server configuration includes batch files and shell scripts that implement typical command-line connector configurations. These files are in the cf_root/bin/connectors directory. For example, the IIS_connector.bat file configures all sites in IIS to site 0, which establishes a globally defined connector so that all sites inherit the filter and mappings.
If you use Apache or Sun ONE Web Server, use these files as prototypes, editing, and saving them as appropriate for your site.
Configure a specific IIS site:
cf_root/runtime/bin/wsconfig.exe -ws iis -site "web31" -v
On systems where all sites run ColdFusion, there is generally no need to configure an individual site.
Configure all existing IIS sites (ISPs):
cf_root/runtime/bin/wsconfig.exe -ws iis -site 0 -v
Configure Apache on UNIX #1:
cf_root/runtime/bin/wsconfig -ws Apache -bin /opt/apache2/bin/httpd -script /opt/apache2/bin/apachectl -dir /opt/apache2/conf -v
Configure Apache on UNIX #2:
cf_root/runtime/bin/wsconfig -ws Apache-bin /usr/bin/httpd -script /usr/bin/httpd -dir /etc/httpd/conf -coldfusion -v
Configure Apache in Windows:
cf_root/runtime/bin/wsconfig.exe -ws apache -dir "c:\program files\apache group\apache2\conf" -coldfusion -v
Configure Sun ONE Web Server on UNIX:
cf_root/runtime/bin/wsconfig -ws sunone -dir [path to config] -coldfusion -v
Each time you run the Web Server Configuration Tool, it creates a configuration file and directory. For example, the first time you run the tool in the server configuration, it creates files under cf_root/config/wsconfig/1; the second time, it creates cf_root/config/wsconfig/2; and so on. Each of these subdirectories contains the appropriate platform-specific connector module and web-server-specific supporting files.
WS Config backs up the connector files when you un-configure or reconfigure the connector. It helps you to compare the new connector files with the backed up files and redo the required customization.
All files available under connector directory (../ColdFusion/config/wsconfig/magicnumber) are backed up in a directory named magicnumber.1 or magicnumber.2 and so on, depending on the number of previous backup directories that are available for same connector. These directories are available in backup directory (../ColdFusion/config/wsconfig/backup) . For instance, if you are about to un-configure a connector which is configured under ../wsconfig/2/ , its files are backed up in ../wsconfig/backup/2.1. If this is the second time you are un-configuring the connector, then ../wsconfig/backup/2.1 is already present. In that case files are saved under ../wsconfig/backup/2.2.
In case of Apache connector, mod_jk.conf , which is present in Apache conf directory is also backed up under ../wsconfig/backup/2.2 directory. Also, if you are un-configuring from command line then connector is backed up by default but if you are un-configuring using WS Config UI tool, you get an option to either accept or deny the backup before un-configuring the connector. This is valid for all connectors and in all the supported platforms.
The following are some examples of connector-specific web server properties that help describe the web server configuration file parameters. These examples assume that Tomcat and the web server are on the same computer.
The following is a typical httpd.conf file for an installation of ColdFusion on the same computer as an Apache 2.0 web server. The httpd.cof file includes the following entry:
# # Load mod_jk module LoadModule jk_module "CF_install\config\wsconfig\1\mod_jk.so" # Where to find workers.properties JkWorkersFile "CF_install\config\wsconfig\1\workers.properties" JkMountFile "CF_install\config\wsconfig\1\uriworkermap.properties" # Where to put jk logs JkLogFile "CF_install\config\wsconfig\1\mod_jk.log" # Where to put jk shared memory JkShmFile "CF_install\config\wsconfig\1\jk_shm" # Set the jk log level [debug/error/info] JkLogLevel info # Select the timestamp log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf Alias /CFIDE "CF_install\cfusion\wwwroot\CFIDE" <Directory "CF_install\cfusion\wwwroot\CFIDE"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <Files ~ ".hbmxml$"> Order allow,deny Deny from all </Files>
Init fn="load-modules" shlib="CF_install/config/wsconfig/2/nsapi_redirect.dll" funcs="jk_init,jk_service"
Init fn="jk_init" worker_file="CF_install/config/wsconfig/2/workers.properties" log_level="info" log_file="CF_install/config/wsconfig/2/nsapi.log" shm_file="CF_install/config/wsconfig/2/jk_shm"
<Object name="default"> NameTrans fn="assign-name" from="/*.hbmxml" name="jknsapi" NameTrans fn="assign-name" from="/*.jsp" name="jknsapi" NameTrans fn="assign-name" from="/*.sws" name="jknsapi" NameTrans fn="assign-name" from="/*.cfswf" name="jknsapi" NameTrans fn="assign-name" from="/*.cfr" name="jknsapi" NameTrans fn="assign-name" from="/*.cfc/*" name="jknsapi" NameTrans fn="assign-name" from="/*.cfc" name="jknsapi" NameTrans fn="assign-name" from="/*.cfml" name="jknsapi" NameTrans fn="assign-name" from="/*.swc" name="jknsapi"NameTrans fn="assign-name" from="/*.cfm/*" name="jknsapi" NameTrans fn="assign-name" from="/*.cfm" name="jknsapi" NameTrans fn="assign-name" from="/*.as" name="jknsapi" NameTrans fn="assign-name" from="/*.mxml" name="jknsapi" NameTrans fn="assign-name" from="/*.cfml/*" name="jknsapi" NameTrans fn="assign-name" from="/rest/*" name="jknsapi" NameTrans fn="assign-name" from="/flex-internal/*" name="jknsapi" NameTrans fn="assign-name" from="/flashservices/gateway/*" name="jknsapi" NameTrans fn="assign-name" from="/cfform-internal/*" name="jknsapi" NameTrans fn="assign-name" from="/CFFileServlet/*" name="jknsapi" NameTrans fn="assign-name" from="/cffileservlet/*" name="jknsapi" NameTrans fn="assign-name" from="/flex2gateway" name="jknsapi" NameTrans fn="assign-name" from="/flex2gateway/*" name="jknsapi" NameTrans fn="assign-name" from="/CFFormGateway/*" name="jknsapi" NameTrans fn="assign-name" from="/cfformgateway/*" name="jknsapi" NameTrans fn="pfx2dir" from="/CFIDE" dir="C:/ColdFusion2016/cfusion/wwwroot/CFIDE" AuthTrans fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true" NameTrans fn="ntrans-j2ee" name="j2ee" NameTrans fn="pfx2dir" from="/mc-icons" dir="C:/Program Files/Oracle/WebServer7/lib/icons" name="es-internal" PathCheck fn="uri-clean" PathCheck fn="check-acl" acl="default" PathCheck fn="find-pathinfo" PathCheck fn="find-index-j2ee" PathCheck fn="find-index" index-names="index.html,home.html,index.jsp" ObjectType fn="type-j2ee" ObjectType fn="type-by-extension" ObjectType fn="force-type" type="text/plain" Service method="(GET|HEAD)" type="magnus-internal/directory" fn="index-common" Service method="(GET|HEAD|POST)" type="*~magnus-internal/*" fn="send-file" Service method="TRACE" fn="service-trace" Error fn="error-j2ee" AddLog fn="flex-log" </Object>
You typically use the Web Server Configuration Tool to configure a connection between the web server and ColdFusion server running on the same computer. However, you can use the web server connector to route requests to multiple virtual sites to a single ColdFusion server. This is known as multihoming.
In a multihomed environment, you have multiple virtual hosts (also known as virtual sites) connected to a single ColdFusion server. You might use these virtual hosts for separate applications, such as Human Resources (HR), payroll, and marketing, or for separate users in a hosting environment.
Multihoming configuration tasks include:
- Enabling access to the ColdFusion Administrator If any of the applications under a virtual host need to access the ColdFusion Administrator, create a web server mapping (Alias directive in Apache) for /CFIDE that points to the original CFIDE directory. Alternatively, you can copy the entire CFIDE directory to the virtual website.
- Copy the original_web_root/CFIDE/scripts directory to a CFIDE/scripts directory on your virtual host.
- Modify all cfform tags to use the scriptsrc attribute to specify the location of the cfform.js file.
- Disabling the cacheRealPath attribute To ensure that ColdFusion always returns pages from the correct server, disable Cache Web Server Paths in the Caching page of the ColdFusion Administrator. The procedures you perform to enable multihoming differ for each web server.
When you use IIS, you run the IIS Administrator to create additional websites and run the Web Server Configuration Tool. You store ColdFusion pages under the web root of each virtual website.
Run the Web Server Configuration Tool, as follows:
- GUI - Select IIS for the Web Server, select All from the IIS Web Site drop-down list, and select the Configure Web Server for ColdFusion Applications check box.
Command line - Specify the -site 0option, as the following server configuration example shows:
When you use Apache, you modify the apache_root/conf/httpd.conf file to create virtual hosts and run the Web Server Configuration Tool. You store ColdFusion pages under the web root of each virtual website.
Open the apache_root/conf/httpd.conf file in a text editor and create virtual hosts, as necessary. For more information, see your Apache documentation. For example:
... NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> ServerAdmin email@example.com DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs" ServerName SERVER02 ErrorLog logs/error.log </VirtualHost> <VirtualHost 127.0.0.1> ServerAdmin firstname.lastname@example.org DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs2" ServerName mystore ErrorLog logs/error-store.log </VirtualHost> <VirtualHost 127.0.0.1> ServerAdmin email@example.com DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs3" ServerName myemployee ErrorLog logs/error-employee.log </VirtualHost> ...
Run the Web Server Configuration Tool, as follows:
- GUI - Specify Apache for the Web Server, specify the directory that contains the httpd.conf file, and select the Configure Web Server for ColdFusion Applications check box.
Command line - Specify -wsapacheand the directory that contains the httpd.conf file, as the following example shows:
On Ubuntu, the bundled Apache Server will be configured with ColdFusion. The request for CFFileServlet and other servlet mapping requests will fail. This is because the default Apache Server running on 80, uses default virtual host. So the connector configuration with bundled Apache Server needs additional steps for user to manually add JkMountFile entry of uriworkermap.properties found in mod_jk.conf to default virtual host setting found in /etc/apache2/sites-available/default.
Click this link to access the video.
When you use Sun ONE Web Server version 6, you use the Server Administrator to create virtual servers and run the Web Server Configuration Tool. You store ColdFusion pages under the web root of each virtual server.
Earlier versions of Sun ONE/iPlanet creates separate server instances for each site. Run the Web Server Configuration Tool once for each site.
Run the Web Server Configuration Tool, as follows:
- GUI - Specify Sun ONE for the web server, specify the directory that contains the obj.conf and magnus.conf files, and select the Configure Web Server for ColdFusion Applications check box.
Command line - Specify -ws sunoneand the directory that contains the obj.conf file, as the following example shows: