2013-03-03 85 views
1

因此,我可能会在这里错过一些基本的理解,但我无法得到这个工作。我有两个django网站,我希望能够在同一个盒子上同时在端口80上托管它们。有没有什么魔法可以让它正常工作?这里是我的地盘 - 可用/默认文件样子:在端口80上托管多个网站

<VirtualHost *:80> 
    WSGIScriptAlias//path/to/proj/apache/django.wsgi 
    AliasMatch ^/([^/]*\.css) /path/to/proj/static/ 
    Alias /media /path/to/proj/static/ 
    Alias /static/ /path/to/proj/static/ 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    LogLevel warn 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

<VirtualHost *:80> 
    WSGIScriptAlias//path/to/otherproj/apache/django.wsgi 

    ErrorLog ${APACHE_LOG_DIR}/error2.log 
    LogLevel warn 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

显然,这并不工作,因为浏览该网站打的第一个,它从来就没有到第二个。所以我的问题是,我怎么设置这个,所以我可以在端口80上托管2个网站。也许我可以像localhost/site1和localhost/site2那样去搞定它,但不管我尝试什么,我都可以'似乎得到这个工作。

我玩过的ServerName属性,但我真的不明白如何可以工作,设置它似乎并没有改变,打到该机器的IP只显示第一个网站,我不知道在哪里使用ServerName影响任何东西。

任何建议,或让我知道如果我需要提供更多信息。

另外请注意,他们都工作,如果我将第二个端口更改为端口8080,但是当我这样做似乎无法将域名置于myip:8080之上。

+0

它是如何应该知道服务于哪个网站? – 2013-03-03 23:20:35

回答

1

我不认为这里有任何解释。您只需要指定每个虚拟域的名称。

注:了NameVirtualHost已被弃用

<VirtualHost *:80> 
    ServerName site1.ltd 
    WSGIScriptAlias//path/to/proj/apache/django.wsgi 
    AliasMatch ^/([^/]*\.css) /path/to/proj/static/ 
    Alias /media /path/to/proj/static/ 
    Alias /static/ /path/to/proj/static/ 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    LogLevel warn 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName site2.ltd 
    WSGIScriptAlias//path/to/otherproj/apache/django.wsgi 

    ErrorLog ${APACHE_LOG_DIR}/error2.log 
    LogLevel warn 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 
+0

因此,让我说我的IP是1.2.3.4,这将如何让我访问每个站点不同? – 2013-03-03 23:29:04

+1

您将不得不注册site1.ltd和site2.ltd作为指向ip 1.2.3.4。然后,访问site2.ltd的用户将被路由到您的服务器,您的服务器将知道(通过HTTP请求标头)仅向他们提供第二个站点。 – 2013-03-03 23:32:57

+0

好的,所以一旦我指向该地址的域名,它就会根据所使用的域名知道要解析哪个域名,但是如果我直接访问该地址,它将只是第一个域名?我想这是有道理的,我会看看它是否有效(尽管需要长达一个小时才能更改我的域名所指的位置) – 2013-03-03 23:39:55