Para hospedar um aplicativo java (JPA e Hibernate) que seve como back-end web para meu aplicativo Android, contratei um VPS(Ubuntu 14.04) no DigitalOcean. Segui os tutoriais de lá e fui capaz de instalar o LAMP, phpMyAdmin e o Tomcat 8. Tudo está funcionando bem.
Como uso basic authentication em meu serviço RESTFUL encarregado de fazer meu aplicativo android ‘puxar’ dados o aplicativo java web, vi que é necessário que as requisições sejam feitas sob HTTPS (ssl). Partindo daí, foi na goDaddy e registrei um domínio (vou chama-lo de meudominio.com) e contratei um certificado SSL.
Com o meu VPS configurado eu consigo tranquilamente acessar meus recurso, por exemplo :
- http://meudominio.com carrega a pagina de teste contida em var/www/meudominio.com
- http://meudominio.com/phpmyadmin, obviamente carrega o phpmyadmin
- http://meudominio.com:8080 carrega a home do Tomcat 8
Mas como eu precisava rodar algumas coisas através de HTTPS, pesquisei mais um pouco e achei coisas sobre Reverse Proxy do Apache. Como estou no linux (Ubuntu 14.04), fui na pasta etc/apache2/sites-available e criei um arquivo meudominio.com-ssl.conf com o seguinte conteudo:
<VirtualHost *:443>`
ServerAdmin [email removido]
ServerName meudominio.com
ServerAlias meudominio.com
DocumentRoot /var/www/meudominio.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /home/teste/ssl/meudominio.com.crt
SSLCertificateKeyFile /home/teste/ssl/meudominio.com.key
SSLCertificateChainFile /home/teste/ssl/intermediate.crt
ProxyRequests Off
ProxyPreserveHost On
tomcat
ProxyPass / ajp://meudominio.com:8009/
ProxyPassReverse / ajp://meudominio.com:8009/
ProxyPassReverseCookiePath / /
</VirtualHost>
`
Também fui em meu arquivo server.xml do Tomcat e descometei a linha
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Depois dessas alterações, o comportamento ficou o seguinte :
- https://meudominio.com carrega a home do Tomcat 8, e não mais a pagina de teste contida em var/www/meudominio.com, isso só acontece se eu acessar o mesmo endereço sem o https (ou seja, http://)
- https://meudominio.com/phpmyadmin, não funciona. O phpmyadmin só é acessível sem o uso do https (novamente via http://)
Depois de toda essa explicação, eu gostaria que fosse possivel acessar os meus serviços da seguinte form, usando o reverse proxy:
- http://meudominio.com para as pagina do apache server contidas em var/www/
- HTTPS://meudominio.com/phpmyadmin, para o phpmyadmin
-
HTTPS://meudominio.com/tomcat para o Tomcat 8.
Lembrando que nem o phpmyadmin, nem o tomcat 8 eu gostaria que fosse possível acessa-los sem ser via HTTPS.
Algum tem alguma ideia de como fazer esta configuração ?