2013-05-17 3 views
1

У меня есть виртуальный хост apache для порта 80, на котором размещено приложение для рельсов 3 phusion для пассажиров. Я хотел бы, чтобы некоторые действия приложения переключались на https (порт 443). Каков наилучший способ поделиться одним экземпляром приложения phusion-пассажирских рельсов между двумя vhosts?Share Rails 3 Развертывание межсетевого взаимодействия между HTTP и HTTPS

Прямо сейчас, у меня есть:

<VirtualHost *:80> 
    ServerName mycompany.com 
    ServerAlias www.mycompany.com 
    RackBaseURI/

    DocumentRoot /home/ubuntu/mycompany/public 
    <Directory /home/ubuntu/mycompany/public > 
    Options FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 

and 

<VirtualHost _default_:443> 
    ServerName shop.mycompany.com 
    SSLEngine On 

    ProxyPass/http://localhost/ 
    ProxyPassReverse/http://localhost/ 
    ProxyPreserveHost On 

    SSLCertificateFile /etc/ssl/... 
    SSLCertificateKeyFile /etc/ssl/... 
    SSLCertificateChainFile /etc/ssl/... 
</VirtualHost> 

Я знаю, что это не идеал вообще. Должен быть лучший способ. Я не хочу, чтобы все запросы проходили через https из-за накладных расходов.

Майк

ответ

0

Моя первая мысль использовать before_filter внутри контроллера. Проверьте некоторые действия перенаправления на протокол HTTPS, например:

class SomeController < ApplicationController 
    before_filter :redirect, :only => [action_list] 

    def redirect 
    redirect_to :protocol => "https://" unless request.ssl? 
    end 
end 

Однако после быстрого поиска, я нашел этот полезный link. Это обеспечивает гораздо более приятное решение.

Надеюсь, что он отвечает на ваш вопрос!

+0

К сожалению, я пытаюсь решить проблему с помощью apache. Apache и mod_rails запускают два экземпляра моего приложения для портов 80 и 443. Сейчас я использую mod_proxy для пересылки между ними. Я надеялся, что есть лучший способ. – mike

+0

А я вижу, вы смотрите на уровень апачей. Это первый раз, когда я видел такую ​​конфигурацию, как ваша :). Интересно, действительно ли это эффективно сделать это по-твоему. – kasperite