I have one physical server that runs:

  • an Apache (httpd) server
  • another web server (let's say Tomcat for sake of argument) on port 1234

Can I configure the Apache server to act as a proxy for SSL traffic, while keeping the application server blissfully unaware of SSL?

What I imagine is:

What's the best setup to achieve this? (On Ubuntu, if that matters)

link|improve this question

72% accept rate
If you have the option of replacing apache, take a look at nginx which is a lot easier to configure for this – hafichuk Nov 15 '11 at 16:24
@hafichuk - is Apache really that hard to configure for this use case? – ripper234 Nov 15 '11 at 16:51
feedback

2 Answers

If Tomcat runs on the standart ports (8080 - HTTP, 8009 - AJP) add this to yours Apache configuration:

<VirtualHost _default_:443>
    .......
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    <Location /app>
        ProxyPass        ajp://localhost:8009/app
        ProxyPassReverse ajp://localhost:8009/app
    </Location>

    #<Location /app>
    #    ProxyPass        http://localhost:8080/app
    #    ProxyPassReverse http://localhost:8080/app
    #</Location>

    <Location "/app/WEB-INF/">
        deny from all
    </Location>    
   ..........
</VirtualHost>

<VirtualHost *:80>
   ...........
    RewriteEngine On
    RewriteRule ^/app$  https://%{HTTP_HOST}%{REQUEST_URI} [R]
   ...........
</VirtualHost>
link|improve this answer
feedback

Have a look at mod_proxy for Apache, and how to use it in 'reverse proxy' mode.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.