当前位置: 首页 > 知识库问答 >
问题:

将一个tomcat应用程序的不安全请求重定向到安全端口,而不重定向另一个应用程序的请求

宰父志新
2023-03-14

我有两个在Tomcat7.0下运行的web应用程序

  1. https://secure.example.com:8443
  2. http://insecure.example.com:8080
    null

是否可以用单个tomcat实例来配置它?

共有1个答案

梁丘琛
2023-03-14

这可以通过在conf/server.xml中设置单独的“service”元素来实现。

例如,您有

<Service name="Catalina">
  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" />
  <Engine name="Catalina" defaultHost="insecure.example.com">
      <Host name="insecure.example.com"  appBase="insecure" unpackWARs="true" autoDeploy="true">
      </Host>
  </Engine>
</Service>

现在增加附加服务部分

<Service name="SecureApps">
  <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
            keystoreFile="/usr/local/tomcat/keys/keystore.p12" keystorePass="mySecret" keystoreType="pkcs12"
           clientAuth="false" sslProtocol="TLS" />
  <Engine name="SecureEngine" defaultHost="secure.example.com">
      <Host name="secure.example.com"  appBase="secure" unpackWARs="true" autoDeploy="true">
      </Host>
  </Engine>
</Service>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <display-name>Redirect to secure port</display-name>
    <description>
        This is a simple web application which redirects you to secure port
    </description>

    <servlet>
        <servlet-name>RedirectServlet</servlet-name>
        <servlet-class>com.mycompany.RedirectServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>RedirectServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

重定向Servlet.java

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RedirectServlet extends HttpServlet
{
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws IOException
    {
        String url = "https://secure.example.com:8443/";

        response.sendRedirect(url);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException
    {
        String url = "https://secure.example.com:8443/";

        response.sendRedirect(url);

    }
}
 类似资料:
  • 我有一个应用程序,可以接受一个POST请求。为了请求,我需要定义一些标题、边界和连字符。换句话说,我需要制定完整的请求。我成功地使用了HttpURLConnection。现在,我想从我的Spring应用程序中请求应用程序。 比如说,我有三个应用程序A(传感器)、B(Spring)和C(服务器)。 在这种情况下,B将充当网桥,从a接收请求,对其进行身份验证并将其发送给C。 我不想在Spring中再次

  • 我们必须编写一个 C 程序,该程序本质上将使用管道将一个命令/程序的 stdin 重定向到另一个命令/程序 stdout。如果命令行上的程序被传递了 . ls -l \; more,它应该将 的 stdout 重定向到 ,其中 是分隔符。这个程序应该适用于我们路径中的任何命令/程序,所以:. cat filename.c \; more,应该与键入:相同。 我的问题是,我的程序似乎不能正常执行,或

  • 我有一个由Tomcat提供服务的java应用程序(即http://111.222.333.444:8080/myapp)。我的客户希望这个应用程序响应一个友好的域(即http://client.example.com)。我不太擅长Apache或Tomcat,但我将Apache配置成这样来执行重定向: 这对于为http://client.example.com下的应用程序提供服务非常有效。但是,我有

  • 我想在成功登录后重定向到主页。我找遍了,但没有找到解决办法。提前感谢

  • 我已经知道如何配置Tomcat,以便它将HTTP请求重定向到HTTPS: 启用并配置SSL连接器 在非SSL连接器上设置正确的“重定向端口”属性 修改web.xml并将传输保证设置为机密 我的问题是:有没有一种方法可以在不修改web.xml文件的情况下实现相同的结果? 我正在寻找一种不必更改Web应用程序的解决方案,它被部署为WAR文件。因此,添加servlet过滤器或在Web应用程序中实现重定向

  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序