2016-06-28 8 views
12

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リクエストを設定するにはどうすればよいですか。

+0

「RewriteHandler」についてはどうですか?多分あなたの問題を解決するのに役立ちます。このハンドラで静的コンテンツを提供するだけです。 – Hrabosch

+0

これに 'nginx'を使うことができます。また、' http'から 'https'へのリダイレクトで静的ページキャッシュのような他の利点が得られます。 – Srinivasu

+0

ResourceHandlerの代わりに、静的コンテンツ用にデフォルトサーブレット+ ServletContextHandlerを使用しようとしましたか(非常に制限されていますか)?多分それが助けになるでしょう。 @ srini私の謙虚な意見では、リダイレクションのためだけに別のHTTPDサーバー(Apache、Nginx、...)を使用すると、サーバーのリソースが非常に限られている場合には特に多すぎます。私はわずか1 GBのRAMを搭載した小さなボードを使用しています。私はあなたの提案に従わないでしょう。 – gouessej

答えて

0

は、私の知る限り言うことができるよう(例えば、this SOthis SFJetty Docsに基づいて)それだけでWebアプリケーションのために、静的なコンテンツのために設定はありません。あなたあなたはJAX-を使用している場合は、JAX-RSやカスタムMessageHandlerを使用している場合は、カスタム@PreMatchingフィルタを作成することである(それはあなたこのようにそれを行う必要があることを意味するものではありません)何ができるか

WSはリダイレクトをプログラマチックに(例えば、HTTP 301を返すことによって)行う。

関連する問題