1

I've my spring boot app running on tomcat EC2 instances behind the Loadbalancer, which has configured with Https and internelly using Http.

I want to redirect url requests to HTTP to HTTPS.

I found this document from AWS Support

As it says I need to config the Apache backend with the following config

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} =http

RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

My Question is where to add these config?

There is another document says i need to add .ebextensions directory to the webapp directory and place configurations there. If that is the case, then what is the directory structure and config file format ?

karan
  • 313
  • 2
  • 3
  • 20
naveejr
  • 735
  • 1
  • 15
  • 31

2 Answers2

3

Create a folder .ebextensions in the root of your project (and make sure it is in the root of the bundle you're uploading to Elastic Beanstalk. Something like this:

~/workspace/my-app/
|-- .ebextensions
|   -- httpd
|      -- conf.d
|         -- myconf.conf
-- index.jsp

in myconf.conf

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

There is a whole article on customizing the Java apps running in Elastic Beanstalk Tomcat: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform.html Have a look for more info.

Strelok
  • 50,229
  • 9
  • 102
  • 115
  • Thanks for the reply, I'll test it. – naveejr Jun 29 '17 at 14:23
  • It is not working. In the logs I found "Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration" – naveejr Jun 29 '17 at 15:26
  • I mark it as accepted as it is answering the main question about directory structure. For full answer check the answer below. https://stackoverflow.com/questions/44805261/redirect-http-url-to-https-in-elastic-beanstalk-loadbalancer/44829374#44829374 – naveejr Jun 29 '17 at 15:33
2

Found the solution create a config file in the following location

~/workspace/server/
|-- .ebextensions
|   -- httpd
|      -- conf.d
|         -- abc.conf

with the following content

<VirtualHost *:80>
   LoadModule rewrite_module modules/mod_rewrite.so

   RewriteEngine On
   RewriteCond %{HTTP:X-Forwarded-Proto} !https
   RewriteCond %{HTTP_USER_AGENT} !ELB-HealthChecker
   RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

   <Proxy *>
     Require all granted
   </Proxy>

   ProxyPass / http://localhost:8080/ retry=0
   ProxyPassReverse / http://localhost:8080/
   ProxyPreserveHost on

   ErrorLog /var/log/httpd/elasticbeanstalk-error_log

</VirtualHost>

Load mod_rewrite is required in newer Tomcat installations.

Source: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-httpredirect.html

naveejr
  • 735
  • 1
  • 15
  • 31