Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
771 blopes 1
<!DOCTYPE html SYSTEM "about:legacy-compat">
2
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.112) - Proxy Support How-To</title></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
3
            Version 9.0.112,
4
            <time datetime="2025-11-06">Nov 6 2025</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li></ul></div><div><h2>User Guide</h2><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="host-manager-howto.html">6) Host Manager</a></li><li><a href="realm-howto.html">7) Realms and AAA</a></li><li><a href="security-manager-howto.html">8) Security Manager</a></li><li><a href="jndi-resources-howto.html">9) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">10) JDBC DataSources</a></li><li><a href="class-loader-howto.html">11) Classloading</a></li><li><a href="jasper-howto.html">12) JSPs</a></li><li><a href="ssl-howto.html">13) SSL/TLS</a></li><li><a href="ssi-howto.html">14) SSI</a></li><li><a href="cgi-howto.html">15) CGI</a></li><li><a href="proxy-howto.html">16) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">17) MBeans Descriptors</a></li><li><a href="default-servlet.html">18) Default Servlet</a></li><li><a href="cluster-howto.html">19) Clustering</a></li><li><a href="balancer-howto.html">20) Load Balancer</a></li><li><a href="connectors.html">21) Connectors</a></li><li><a href="monitoring.html">22) Monitoring and Management</a></li><li><a href="logging.html">23) Logging</a></li><li><a href="apr.html">24) APR/Native</a></li><li><a href="virtual-hosting-howto.html">25) Virtual Hosting</a></li><li><a href="aio.html">26) Advanced IO</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>Proxy Support How-To</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
5
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Apache_httpd_Proxy_Support">Apache httpd Proxy Support</a></li></ul>
6
</div><h3 id="Introduction">Introduction</h3><div class="text">
7
 
8
<p>Using standard configurations of Tomcat, web applications can ask for
9
the server name and port number to which the request was directed for
10
processing.  When Tomcat is running standalone with the
11
<a href="config/http.html">HTTP/1.1 Connector</a>, it will generally
12
report the server name specified in the request, and the port number on
13
which the <strong>Connector</strong> is listening.  The servlet API
14
calls of interest, for this purpose, are:</p>
15
<ul>
16
<li><code>ServletRequest.getServerName()</code>: Returns the host name of the server to which the request was sent.</li>
17
<li><code>ServletRequest.getServerPort()</code>: Returns the port number of the server to which the request was sent.</li>
18
<li><code>ServletRequest.getLocalName()</code>: Returns the host name of the Internet Protocol (IP) interface on which the request was received.</li>
19
<li><code>ServletRequest.getLocalPort()</code>:  Returns the Internet Protocol (IP) port number of the interface on which the request was received.</li>
20
</ul>
21
 
22
<p>When you are running behind a proxy server (or a web server that is
23
configured to behave like a proxy server), you will sometimes prefer to
24
manage the values returned by these calls.  In particular, you will
25
generally want the port number to reflect that specified in the original
26
request, not the one on which the <strong>Connector</strong> itself is
27
listening.  You can use the <code>proxyName</code> and <code>proxyPort</code>
28
attributes on the <code>&lt;Connector&gt;</code> element to configure
29
these values.</p>
30
 
31
<p>Proxy support can take many forms.  The following sections describe
32
proxy configurations for several common cases.</p>
33
 
34
</div><h3 id="Apache_httpd_Proxy_Support">Apache httpd Proxy Support</h3><div class="text">
35
 
36
<p>Apache httpd 1.3 and later versions support an optional module
37
(<code>mod_proxy</code>) that configures the web server to act as a proxy
38
server.  This can be used to forward requests for a particular web application
39
to a Tomcat instance, without having to configure a web connector such as
40
<code>mod_jk</code>.  To accomplish this, you need to perform the following
41
tasks:</p>
42
<ol>
43
<li><p>Configure your copy of Apache so that it includes the
44
    <code>mod_proxy</code> module.  If you are building from source,
45
    the easiest way to do this is to include the
46
    <code>--enable-module=proxy</code> directive on the
47
    <code>./configure</code> command line.</p></li>
48
<li><p>If not already added for you, make sure that you are loading the
49
    <code>mod_proxy</code> module at Apache startup time, by using the
50
    following directives in your <code>httpd.conf</code> file:</p>
51
<div class="codeBox"><pre><code>LoadModule proxy_module  {path-to-modules}/mod_proxy.so
52
</code></pre></div></li>
53
<li><p>Include two directives in your <code>httpd.conf</code> file for
54
    each web application that you wish to forward to Tomcat.  For
55
    example, to forward an application at context path <code>/myapp</code>:</p>
56
<div class="codeBox"><pre><code>ProxyPass         /myapp  http://localhost:8081/myapp
57
ProxyPassReverse  /myapp  http://localhost:8081/myapp</code></pre></div>
58
    <p>which tells Apache to forward URLs of the form
59
    <code>http://localhost/myapp/*</code> to the Tomcat connector
60
    listening on port 8081.</p></li>
61
<li><p>Configure your copy of Tomcat to include a special
62
    <code>&lt;Connector&gt;</code> element, with appropriate
63
    proxy settings, for example:</p>
64
<div class="codeBox"><pre><code>&lt;Connector port="8081" ...
65
              proxyName="www.mycompany.com"
66
              proxyPort="80"/&gt;</code></pre></div>
67
    <p>which will cause servlets inside this web application to think that
68
    all proxied requests were directed to <code>www.mycompany.com</code>
69
    on port 80.</p></li>
70
<li><p>It is legal to omit the <code>proxyName</code> attribute from the
71
    <code>&lt;Connector&gt;</code> element.  If you do so, the value
72
    returned by <code>request.getServerName()</code> will by the host
73
    name on which Tomcat is running.  In the example above, it would be
74
    <code>localhost</code>.</p></li>
75
<li><p>If you also have a <code>&lt;Connector&gt;</code> listening on port
76
    8080 (nested within the same <a href="config/service.html">Service</a>
77
    element), the requests to either port will share the same set of
78
    virtual hosts and web applications.</p></li>
79
<li><p>You might wish to use the IP filtering features of your operating
80
    system to restrict connections to port 8081 (in this example) to
81
    be allowed <strong>only</strong> from the server that is running
82
    Apache.</p></li>
83
<li><p>Alternatively, you can set up a series of web applications that are
84
    only available via proxying, as follows:</p>
85
    <ul>
86
    <li>Configure another <code>&lt;Service&gt;</code> that contains
87
        only a <code>&lt;Connector&gt;</code> for the proxy port.</li>
88
    <li>Configure appropriate <a href="config/engine.html">Engine</a>,
89
        <a href="config/host.html">Host</a>, and
90
        <a href="config/context.html">Context</a> elements for the virtual hosts
91
        and web applications accessible via proxying.</li>
92
    <li>Optionally, protect port 8081 with IP filters as described
93
        earlier.</li>
94
    </ul></li>
95
<li><p>When requests are proxied by Apache, the web server will be recording
96
    these requests in its access log.  Therefore, you will generally want to
97
    disable any access logging performed by Tomcat itself.</p></li>
98
</ol>
99
 
100
<p>When requests are proxied in this manner, <strong>all</strong> requests
101
for the configured web applications will be processed by Tomcat (including
102
requests for static content).  You can improve performance by using the
103
<code>mod_jk</code> web connector instead of <code>mod_proxy</code>.
104
<code>mod_jk</code> can be configured so that the web server serves static
105
content that is not processed by filters or security constraints defined
106
within the web application's deployment descriptor
107
(<code>/WEB-INF/web.xml</code>).</p>
108
 
109
</div></div></div></div></div><footer><div id="footer">
110
    Copyright &copy; 1999-2025, The Apache Software Foundation
111
    <br>
112
    Apache Tomcat, Tomcat, Apache, the Apache Tomcat logo and the Apache logo
113
    are either registered trademarks or trademarks of the Apache Software
114
    Foundation.
115
    </div></footer></div></body></html>