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).

About web servers in ColdFusion

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.

Using the built-in 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>

Note:

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._

Using an external web server

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:

Web server

Connector details

Apache

The Web Server Configuration Tool adds the following elements to the Apache httpd.conf file:

  • A LoadModule directive defines the connector.
  • An AddHandler directive tells Apache to route requests for ColdFusion pages through the connector.
    For Apache 2.x, the connection module is mod_jk.so.

IIS

The Web Server Configuration Tool adds the following elements at either the global level (default) or website level:

  • Creates a folder 1 in cf_root\config\wsconfig, that contains all connector-related files.
  • Creates a virtual directory Jakarta in cf_root\config\wsconfig (in IIS).
  • Adds an entry, tomcat, under the{{ ISAPI FILTERS}}. This points to cf_root\config\wsconfig\1\ isapi_redirect.dll.
  • Adds an entry, tomcat, to cf_root\config\wsconfig\1\isapi_redirect.dll with permission allowed under ISAPI and CGI Restrictions. This is applicable for global sites in IIS manager.
  • Adds the following isapi handlers: cfcHandler, cfmHandler, cfmlHandler, cfrHandler, and cfswfHandler.
  • For debugging issues, set the log level to debug, in the isapi_redirect.properties file present in the {{cf_roots\config\wsconfig\1\ }}directory.
  • To disable webserver buffer, change the is_buffer_enable to false in the cf_root\config\wsconfig\1\isapi_redirect.properties file. Do this if you want cfflush to work over an IIS connector. If your application does not use cfflush, set this to true. This may increase the performance.

Sun ONE Web Server

The Web Server Configuration Tool adds the following elements to Sun ONE Web Server configuration files:

  • Creates a folder 1 in the ColdFusion10\config\wsconfig folder that contains all connector-related files.
  • Adds the following entry in the magnus.conffile of Sun ONE. Change the log level to{{ debug}} for debugging issues.

    Init fn="load-modules" shlib="C:/ColdFusion10/config/wsconfig/2/nsapi_redirect.dll" funcs="jk_init,jk_service"
    Init fn="jk_init" worker_file="cf_root/config/wsconfig/2/workers.properties" log_level="info" log_file="cf_root/config/wsconfig/2/nsapi.log" shm_file="cf_root/config/wsconfig/2/jk_shm"

    Adds the entries for all extensions in the obj.conffile of Sun ONE. For example,

    NameTrans fn="assign-name" from="/*.cfc/*" name="jknsapi"
    NameTrans fn="assign-name" from="/*.cfc" name="jknsapi"
    NameTrans fn="assign-name" from="/*.cfml" name="jknsapi"
    <Object name="jknsapi">
    Service fn="jk_service" method="*" worker="server1"
    </Object>

Note:

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. 

Web server configuration

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.

Using GUI mode

The Web Server Configuration Tool includes a GUI mode, which you can use to specify external web server configuration settings through a graphical interface.

Note:

When you use the Web Server Configuration Tool in GUI mode, select the Configure Web Server for ColdFusion Applications check box.

Run the Web Server Configuration Tool in GUI mode

  1. Open a console window.

    Note:

    In Windows, to start the Web Server Configuration Tool, select Start > All Programs > Adobe > ColdFusion 2016 > Web Server Configuration Tool.

  2. Change to the cf_root/cfusion/runtime/bin.

  3. Start the Web Server Configuration Tool using the wsconfig.exe (Windows) or wsconfig (UNIX) command. The Web Server Configuration Tool window appears.

  4. Click Add.

  5. Select Configure Web Server For ColdFusion Applications.

  6. Provide the application server host and the application server cluster.

    Note:

    The server or cluster does not have to reside on the web server computer. In this case, enter the IP address or server name of the remote computer.

  7. In the Web Server Properties area, enter web-server-specific information, and click OK.

  8. (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.

Using the command-line interface

  1. Open a console window.

  2. Change to the cf_root/runtime/bin (server configuration) directory.

  3. Execute the wsconfig.exe (Windows) or wsconfig (UNIX) command:

    wsconfig.exe [-options]

    ./wsconfig [-options]

    The following table describes the options:

    Option

    Description

    -ws

    Specifies the web server, as follows:

    • IIS
    • Apache
    • SunOne
      The web server name you supply is not case sensitive.

    {{-dir }}

    Specifies the path to the configuration directory (SunONE config).

    -site

    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.

    {{-host }}

    Specifies the ColdFusion server address. The default value is localhost.

    -norestart

    Specifies not to restart the web server.

    -cluster

    Specifies the Tomcat cluster name. Use this option to define a connection to a Tomcat cluster instead of a single server.

    -l

    Enables verbose logging for the connector.

    -upgrade

    Upgrades existing configured connectors with newer modules from a newer wsconfig.jar file.

    -service

    Specifies the Apache Windows service name. The default value is Apache.

    -bin

    Specifies the path to the Apache server binary file (apache.exe in Windows, httpd on UNIX).

    -script

    Specifies the path to the Apache UNIX control script file (apachectl, but slightly different with certain Apache variants, such as Stronghold).

    -v

    Enables verbose output from the Web Server Configuration Tool.

    -list

    Lists all configured web servers.

    -list -host server-host

    Lists all Tomcat servers on the specified host.

    -remove

    Removes a configuration. Requires the ws and either the dir or site options.

    -uninstall

    Removes all configured connectors.

    {{-h }}

    Lists all parameters.

Using the batch files and shell scripts

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.

Command-line interface examples

  1. 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.

  2. Configure all existing IIS sites (ISPs):

    cf_root/runtime/bin/wsconfig.exe -ws iis -site 0 -v

  3. 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

  4. 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

  5. Configure Apache in Windows:

    cf_root/runtime/bin/wsconfig.exe -ws apache -dir "c:\program files\apache group\apache2\conf" -coldfusion -v

  6. Configure Sun ONE Web Server on UNIX:

    cf_root/runtime/bin/wsconfig -ws sunone -dir [path to config] -coldfusion -v

Configuration files

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.

Backing up connector 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. 

Note:

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.

Sample configuration files

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.

Apache configuration file

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:

Include "Apache_install\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"

The mod_jk.conf file has the following:

# # 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>

Sun ONE configuration file

The following is a typical obj.conf file for iPlanet, or Sun ONE Web Server:

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"

The following is a typical magnus.conf file for iPlanet, or Sun ONE Web Server:

<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>

Multihoming

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.
  • Enabling access to the cfform.js file If you do not create a web server mapping for /CFIDE, and any of the applications under a virtual host use the cfformtag, enable the virtual host to find the JavaScript files under the CFIDE/scripts directory. To enable access to the scripts, use one of the following options:
    • 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.

IIS

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.

Connect multiple virtual sites on IIS to a single ColdFusion server

  1. Use the IIS Administrator to create virtual websites, as necessary. The web root directory should enable read, write, and execute access. For more information, see your IIS documentation.

  2. Configure DNS for each virtual website, as described in your IIS documentation.

  3. Test each virtual website to ensure that HTML pages are served correctly.

  4. 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:

    cf_root/runtime/bin/wsconfig.exe -ws iis -site 0 -v

  5. Test each virtual website to ensure that ColdFusion pages are served correctly.

Apache

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.

Connect multiple Apache virtual hosts on a web server to a single ColdFusion server

  1. Configure DNS for each virtual website, as described in your web server documentation.

  2. 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 admin@yoursite.com
    DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"
    ServerName SERVER02
    ErrorLog logs/error.log
    </VirtualHost>
    <VirtualHost 127.0.0.1>
    ServerAdmin admin@yoursite.com
    DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs2"
    ServerName mystore
    ErrorLog logs/error-store.log
    </VirtualHost>
    <VirtualHost 127.0.0.1>
    ServerAdmin admin@yoursite.com
    DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs3"
    ServerName myemployee
    ErrorLog logs/error-employee.log
    </VirtualHost>
    ...
  3. Test each virtual host to ensure that HTML pages are served correctly.

  4. 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:

    cf_root/runtime/bin/wsconfig.exe -ws apache
    -dir "c:\program files\apache group\apache2\conf" -v

    For additional UNIX command-line examples, see Using the command-line interface. The Web Server Configuration Tool updates the httpd.conf file. For a sample, see Apache.

  5. Restart Apache. You store ColdFusion files for each virtual host in the directory specified by the DocumentRoot directive.

  6. Test each virtual host to ensure that ColdFusion pages are served correctly.

Note:

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.

Configuring ColdFusion Connector with Apache Virtual Hosts (Community Video)

Click this link to access the video.

Sun ONE Web Server and iPlanet

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.

Note:

Earlier versions of Sun ONE/iPlanet creates separate server instances for each site. Run the Web Server Configuration Tool once for each site.

Connect multiple Sun ONE Web Server virtual hosts to a single ColdFusion server

  1. Using the Sun ONE Web Server Administrator, create virtual web servers for ColdFusion to use. For more information, see your Sun ONE Web Server documentation.

  2. Configure DNS for each virtual website, as described in your web server documentation.

  3. Test each virtual server to ensure that HTML pages are served correctly.

  4. 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:

    cf_root/runtime/bin/wsconfig -ws sunone -dir [path to config] -coldfusion -v

  5. Test each virtual server to ensure that ColdFusion pages are served correctly.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy