如何使用apache将不同的子域路由到不同的端口/服务器?

时间:2012-02-02 19:53:59

标签: ruby-on-rails apache virtualhost

在我的开发机器上,我希望能够拥有一个SSL服务器和一个非SSL服务器(两者都运行相同的代码......但运行两个服务器都很容易。)

对于我的常规服务器:我希望它是sub1.mydomain.com

所以,我修改了我的VirtualHost,而不是说

mydomain.com
*.mydomain.com,

它说

sub1.mydomain.com
*.sub1.mydomain.com

然后对于SSL服务器,我刚才说

sub2.mydomain.com
*.sub2.mydomain.com

除了每当我到达sub2.mydomain url时,附加到sub1的服务器处理请求。

我在这里做错了什么?

我在轨道上使用ruby和apache。

编辑:添加了实际的虚拟主机

<VirtualHost *:80>
    DocumentRoot "/Users/me/projects/myproject/public"
    ServerName reg.mydomain.com
    #ServerAlias *.reg.mydomain.com
    ProxyPass / http://localhost:3001/
    ProxyPassReverse / http://localhost:3001
</VirtualHost>


<VirtualHost *:443>
    SSLEngine on
    SSLProxyEngine On
    RequestHeader set Front-End-Https "On"
    CacheDisable *
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    DocumentRoot "/Users/me/projects/myproject/public"
    ServerName ssl.mydomain.com
    #ServerAlias *.ssl.mydomain.com
    SSLCertificateKeyFile "/private/etc/apache2/certs/server.key"
    SSLCertificateFile "/private/etc/apache2/certs/server.crt"

    ProxyPass / https://localhost:3002/
    ProxyPassReverse / https://localhost:3002
    ProxyPreserveHost on    
</VirtualHost>

1 个答案:

答案 0 :(得分:1)

听起来你正在尝试命名虚拟主机?

http://httpd.apache.org/docs/2.2/vhosts/name-based.html

假设rails没有做任何太时髦的事情,你可以尝试使用如下所示的虚拟主机:

NameVirtualHost *

<VirtualHost *>
ServerName sub1.mydomain.com
DocumentRoot /var/www/sub1 or point this to the server instead.
</VirtualHost>

<VirtualHost *>
ServerName sub2.mydomain.com
DocumentRoot /var/www/sub2 or point this to the server instead.
</VirtualHost>