2016-04-29 7 views
0

context tomcatアプリケーション用のapache2リバースプロキシを正しく設定できません。Apache2 ProxPassReverse with tomcatリダイレクトとコンテキスト

ブラウザにwww.projet-okinawa.chというURLを使用して、アプリケーションに外部からアクセスしています。

私のTCPポート80はiptablesによって8080にルーティングされます。

(sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080) 

私はポート8080からURL www.projet-okinawa.chをキャッチし、SSLポートに要求をリダイレクトするように仮想ホストを定義しました。

<VirtualHost *:8080> 
     ServerName www.projet-okinawa.ch 
     ServerAlias projet-okinawa.ch 
     Redirect permanent/https://www.projet-okinawa.ch:8443/ 
</VirtualHost> 

I defined a second virtual host to catch the same url from the port 8443 that enable ssl and manage the reverse proxy. 
<VirtualHost *:8443> 
     ServerName www.projet-okinawa.ch 
     ProxyRequests Off 
     <Proxy *> 
       Order deny,allow 
       Allow from all 
     </Proxy> 
     ProxyPass/http://web.projet-okinawa.org:8081/okinawa 
     ProxyPassReverse/http://web.projet-okinawa.org:8081/okinawa 
     <Location /> 
       Order allow,deny 
       Allow from all 
     </Location> 
     SSLCertificateFile /etc/letsencrypt/live/os-vps276.projet-okinawa.org/cert.pem 
     SSLCertificateKeyFile /etc/letsencrypt/live/os-vps276.projet-okinawa.org/privkey.pem 
     SSLCertificateChainFile /etc/letsencrypt/live/os-vps276.projet-okinawa.org/chain.pem 
     Include /etc/letsencrypt/options-ssl-apache.conf 
</VirtualHost> 

Webアプリケーションのコンテキストが/ okinawaに設定されていることに注意してください。

私のtomcat設定は、8080、8081、8443のTCPポートをリッスンしています。

<Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" /> 
<Connector port="8081" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" 
      proxyName="www.projet-okinawa.ch" proxyPort="8443" scheme="https" /> 
<Connector port="8443" 
      protocol="org.apache.coyote.http11.Http11NioProtocol" 
      maxThreads="150" 
      SSLEnabled="true" 
      scheme="https" 
      secure="true" 
      clientAuth="false" 
      sslProtocol="TLS" 
      URIEncoding="UTF-8" 
      keystoreFile={keystore} keystorePass={password} /> 

ウェブアプリケーションは、contextina/okinawaの下でCatalina localhostエンジンで実行されます。コンテキストは、コンテキスト記述子を使用することではなく自動配置によって定義されました。アプリケーションは正しく実行され、ポート8080(例:http://web.projet-okinawa.org/okinawa/participatewithus.html)を使用して内部的にアクセスできます。

www.projet-okinawa.chを使用してプロキシ経由でアクセスすると、HTTPステータス404 -/okinawaokinawa/exceptionが発生します。

私はリバースプロキシを構成するために多くの異なる方法をテストしましたが、成功しませんでした。なぜ私は戻ってくるURLがwww.projet-okinawa.chにバックアップされていないのか分かりません。

助けを歓迎します。

答えて

0

慎重にhttp://httpd.apache.org/docs/current/mod/mod_proxy.htmlを読んで私の誤りを発見しました。

"最初の引数が/で終わっている場合、2番目の引数も末尾の/で終わらなければなりません。そうでなければ、バックエンドへの要求は必要なスラッシュを失い、 "

ProxyPass/http://web.projet-okinawa.org:8081/okinawa/ 
ProxyPassReverse/http://web.projet-okinawa.org:8081/okinawa/ 

私の問題を解決しました。

関連する問題