2016-04-29 8 views
0

Я не могу правильно настроить свой обратный прокси apache2 для приложения context tomcat.Apache2 ProxPassReverse с перенаправлением и контекстом tomcat

Я использую URL-адрес www.projet-okinawa.ch в браузере для внешнего доступа к приложению.

Мой tcp-порт 80 направляется на 8080 по iptables.

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

я определил виртуальный хост, чтобы поймать URL-адрес www.projet-okinawa.ch из порта 8080 и перенаправить запрос на порт 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> 

Вы можете заметить, что контекст веб-приложения установлен на/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} /> 

Веб-приложение выполняется на локальном двигателе Catalina в контексте/okinawa. Контекст не был определен с использованием дескриптора контекста, а путем автоматического развертывания. Приложение выполняется правильно, и оно доступно внутренне, используя порт 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.

«Если первый аргумент заканчивается завершающим /, второй аргумент должен также заканчиваться конечным/и наоборот. В противном случае результирующие запросы к серверу могут пропустить некоторые необходимые косые черты и не доставить ожидаемые результаты «.

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

решена моя проблема.