Ich habe Jetty 9.3 mit zwei XML-Kontextkonfigurationen eingerichtet. Eine für static content:Anlegesteg: HTTP auf HTTPS für statischen Inhalt umleiten
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
<Set name="contextPath">/static</Set>
<Set name="handler">
<New class="org.eclipse.jetty.server.handler.ResourceHandler">
<Set name="resourceBase">/home/user/static</Set>
<Set name="directoriesListed">true</Set>
</New>
</Set>
</Configure>
und eine für eine Webanwendung (WAR-Datei):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/webapp</Set>
<Set name="war">/home/user/webapp.war</Set>
</Configure>
habe ich dann this answer Jetty einzurichten, um HTTP-Anfragen an HTTPS weiterleiten. Genauer gesagt, habe ich folgende jetty/etc/webdefault.xml
:
<security-constraint>
<web-resource-collection>
<web-resource-name>Everything</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
und fügte hinzu, die folgenden meinen HttpConfiguration
in jetty/etc/jetty.xml
:
<Call name="addCustomizer">
<Arg>
<New class="org.eclipse.jetty.server.SecureRequestCustomizer" />
</Arg>
</Call>
Das funktioniert perfekt für meine Web-Anwendung (dh Zugriff auf den Server über HTTP zu '/webapp 'wird zu HTTPS umleiten, scheint aber den statischen Inhalt, der unter'/static 'bereitgestellt wird, nicht zu beeinflussen. Ich nehme an, dies liegt daran, dass die Einstellung, die zu webdefault.xml
hinzugefügt wurde, nur für Web-Anwendungen gilt, da sie eine anwendbare Datei web.xml
haben.
Wie kann ich HTTP-Anfragen einrichten, um für alle meine Seiten, die als statischer Inhalt dienen, an HTTPS umzuleiten?
Was ist mit 'RewriteHandler'? Vielleicht hilft es dir, dein Problem zu lösen. Stellen Sie statischen Inhalt einfach mit diesem Handler bereit. – Hrabosch
Sie können 'nginx' für dieses verwenden, zusammen mit der' http'- zu 'https'-Weiterleitung erhalten Sie andere Vorteile wie statischen Seitencache. – Srinivasu
Haben Sie versucht, das Standard-Servlet + ServletContextHandler für Ihren statischen Inhalt anstelle von ResourceHandler zu verwenden (was sehr begrenzt ist)? Vielleicht würde es helfen. @srini Meiner Meinung nach ist die Verwendung eines anderen HTTPD-Servers (Apache, Nginx, ...) nur für die Umleitungen ein bisschen zu viel, besonders wenn Ihr Server sehr begrenzte Ressourcen hat. Ich benutze ein kleines Board mit nur einem GB RAM, ich würde Ihrem Vorschlag nicht folgen. – gouessej