Jetty 是一个开源的 Java HTTP(Web)服务器和 Java Servlet 容器。它可以独立运行,也可以嵌入到其他 Java 应用程序中。Jetty 提供了丰富的功能,包括支持 HTTP/2、WebSocket、SSL/TLS 等。
假设你已经有一个 Jetty 项目,并且希望配置 HTTPS 域名。以下是一个简单的示例:
keytool -genkey -alias jetty -keyalg RSA -keystore keystore.jks -keysize 2048
jetty.xml
文件:<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
<Set name="keyStorePath"><Property name="jetty.base" default="." />/etc/keystore.jks</Set>
<Set name="keyStorePassword">your_keystore_password</Set>
<Set name="keyManagerPassword">your_keymanager_password</Set>
</New>
<Call id="httpsConnector" name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="httpConfig" /></Arg>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.HttpsConnectionFactory">
<Arg name="config"><Ref refid="httpsConfig" /></Arg>
<Arg name="sslContextFactory"><Ref refid="sslContextFactory" /></Arg>
</New>
</Item>
</Array>
</Arg>
<Arg name="port">8443</Arg>
<Arg name="idleTimeout"><Property name="http.timeout" default="30000" /></Arg>
</New>
</Arg>
</Call>
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Item>
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item>
</Array>
</Set>
</New>
</Set>
<Call name="addBean">
<Arg>
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="secureScheme">https</Set>
<Set name="securePort"><Property name="jetty.secure.port" default="8443" /></Set>
<Set name="outputBufferSize">32768</Set>
<Set name="requestHeaderSize">8192</Set>
<Set name="responseHeaderSize">8192</Set>
<Set name="sendServerVersion">true</Set>
<Set name="maxErrorDispatches">10</Set>
<Set name="blockingTimeout"><Property name="http.timeout" default="30000" /></Set>
<Set name="maxConnections">200</Set>
</New>
</Arg>
</Call>
<Call name="addBean">
<Arg>
<New id="httpsConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="secureScheme">https</Set>
<Set name="securePort"><Property name="jetty.secure.port" default="8443" /></Set>
<Set name="outputBufferSize">32768</Set>
<Set name="requestHeaderSize">8192</Set>
<Set name="responseHeaderSize">8192</Set>
<Set name="sendServerVersion">true</Set>
<Set name="maxErrorDispatches">10</Set>
<Set name="blockingTimeout"><Property name="http.timeout" default="30000" /></Set>
<Set name="maxConnections">200</Set>
</New>
</Arg>
</Call>
</Configure>
jetty.xml
文件中的端口号来解决。通过以上步骤和配置,你可以成功设置 Jetty 的域名,并使其支持 HTTPS 访问。
领取专属 10元无门槛券
手把手带您无忧上云