澳门新葡新京官方网站

Proxy Support How-To

Table of Contents

Introduction

Using standard configurations of Tomcat, web applications can ask for the server name and port number to which the request was directed for processing. When Tomcat is running standalone with the HTTP/1.1 Connector, it will generally report the server name specified in the request, and the port number on which the Connector is listening. The servlet API calls of interest, for this purpose, are:

  • ServletRequest.getServerName(): Returns the host name of the server to which the request was sent.
  • ServletRequest.getServerPort(): Returns the port number of the server to which the request was sent.
  • ServletRequest.getLocalName(): Returns the host name of the Internet Protocol (IP) interface on which the request was received.
  • ServletRequest.getLocalPort(): Returns the Internet Protocol (IP) port number of the interface on which the request was received.

When you are running behind a proxy server (or a web server that is configured to behave like a proxy server), you will sometimes prefer to manage the values returned by these calls. In particular, you will generally want the port number to reflect that specified in the original request, not the one on which the Connector itself is listening. You can use the proxyName and proxyPort attributes on the <Connector>澳门新葡新京官方网站 element to configure these values.

澳门新葡新京官方网站Proxy support can take many forms. The following sections describe proxy configurations for several common cases.

Apache httpd Proxy Support

Apache httpd 1.3 and later versions support an optional module (mod_proxy) that configures the web server to act as a proxy server. This can be used to forward requests for a particular web application to a Tomcat instance, without having to configure a web connector such as mod_jk澳门新葡新京官方网站. To accomplish this, you need to perform the following tasks:

  1. Configure your copy of Apache so that it includes the mod_proxy module. If you are building from source, the easiest way to do this is to include the --enable-module=proxy directive on the ./configure command line.

  2. If not already added for you, make sure that you are loading the mod_proxy module at Apache startup time, by using the following directives in your httpd.conf file:

    LoadModule proxy_module  {path-to-modules}/mod_proxy.so
    
  3. Include two directives in your httpd.conf file for each web application that you wish to forward to Tomcat. For example, to forward an application at context path /myapp:

    ProxyPass         /myapp  http://localhost:8081/myapp
    ProxyPassReverse  /myapp  http://localhost:8081/myapp

    which tells Apache to forward URLs of the form http://localhost/myapp/* to the Tomcat connector listening on port 8081.

  4. Configure your copy of Tomcat to include a special <Connector>澳门新葡新京官方网站 element, with appropriate proxy settings, for example:

    <Connector port="8081" ...
                  proxyName="www.mycompany.com"
                  proxyPort="80"/>

    which will cause servlets inside this web application to think that all proxied requests were directed to www.mycompany.com on port 80.

  5. It is legal to omit the proxyName attribute from the <Connector> element. If you do so, the value returned by request.getServerName() will by the host name on which Tomcat is running. In the example above, it would be localhost.

  6. If you also have a <Connector> listening on port 8080 (nested within the same Service element), the requests to either port will share the same set of virtual hosts and web applications.

  7. You might wish to use the IP filtering features of your operating system to restrict connections to port 8081 (in this example) to be allowed only澳门新葡新京官方网站 from the server that is running Apache.

  8. Alternatively, you can set up a series of web applications that are only available via proxying, as follows:

    • Configure another <Service> that contains only a <Connector> for the proxy port.
    • Configure appropriate Engine, Host, and Context elements for the virtual hosts and web applications accessible via proxying.
    • Optionally, protect port 8081 with IP filters as described earlier.
  9. When requests are proxied by Apache, the web server will be recording these requests in its access log. Therefore, you will generally want to disable any access logging performed by Tomcat itself.

When requests are proxied in this manner, all requests for the configured web applications will be processed by Tomcat (including requests for static content). You can improve performance by using the mod_jk web connector instead of mod_proxy. mod_jk can be configured so that the web server serves static content that is not processed by filters or security constraints defined within the web application's deployment descriptor (/WEB-INF/web.xml).

Comments

Notice: This comments section collects your suggestions on improving documentation for Apache Tomcat.

If you have trouble and need help, read page and ask your question on the tomcat-users . Do not ask such questions here. This is not a Q&A section.

The Apache Comments System is explained here澳门新葡新京官方网站. Comments may be removed by our moderators if they are either implemented or considered invalid/off-topic.

宝马在线1211com-澳门新葡新京官方网站 宝马在线电子游戏1211-澳门新葡新京官方网站 新奔驰宝马娱乐登陆-澳门新葡新京官方网站 新宝马娱乐21222-澳门新葡新京官方网站 宝马上线娱乐1211con-澳门新葡新京官方网站 千赢qy88vip-澳门新葡新京官方网站 贝斯特全球最奢华平台-澳门新葡新京官方网站 贝斯特全球最奢华游戏平台-澳门新葡新京官方网站 贝斯特最奢华游戏平台-澳门新葡新京官方网站 vip千嬴国际官网登录-澳门新葡新京官方网站