2つのXMLコンテキスト設定でJetty 9.3をセットアップしました。 static contentの一つ:Jetty:静的コンテンツのHTTPからHTTPSへのリダイレクト
<?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>
とWebアプリケーション(WARファイル)のための1:
<?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>
私は、HTTPSにHTTP要求を転送する突堤を設定するためにthis answerを使用。
<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>
をしてjetty/etc/jetty.xml
の私HttpConfiguration
に以下を追加:具体的には、私はjetty/etc/webdefault.xml
に以下を追加
<Call name="addCustomizer">
<Arg>
<New class="org.eclipse.jetty.server.SecureRequestCustomizer" />
</Arg>
</Call>
これは私のWebアプリケーションのために完璧に動作します(つまり 'でのHTTPを介してサーバーにアクセスします/ webapp 'はHTTPSにリダイレクトされます)、'/static 'の下で提供される静的コンテンツには影響しないようです。これは、webdefault.xml
に追加された設定が、該当するweb.xml
ファイルを持っているため、Webアプリケーションにのみ適用されるためです。
静的コンテンツとして提供されるすべてのページに対してHTTPSにリダイレクトするようにHTTPリクエストを設定するにはどうすればよいですか。
「RewriteHandler」についてはどうですか?多分あなたの問題を解決するのに役立ちます。このハンドラで静的コンテンツを提供するだけです。 – Hrabosch
これに 'nginx'を使うことができます。また、' http'から 'https'へのリダイレクトで静的ページキャッシュのような他の利点が得られます。 – Srinivasu
ResourceHandlerの代わりに、静的コンテンツ用にデフォルトサーブレット+ ServletContextHandlerを使用しようとしましたか(非常に制限されていますか)?多分それが助けになるでしょう。 @ srini私の謙虚な意見では、リダイレクションのためだけに別のHTTPDサーバー(Apache、Nginx、...)を使用すると、サーバーのリソースが非常に限られている場合には特に多すぎます。私はわずか1 GBのRAMを搭載した小さなボードを使用しています。私はあなたの提案に従わないでしょう。 – gouessej