在端口80上托管多个网站

时间:2013-03-03 23:05:34

标签: django apache mod-wsgi virtualhost

所以我可能会对这里发生的事情缺少一些基本的了解,但我无法让它发挥作用。我有两个django网站,我希望能够在同一个盒子上托管它们,都在端口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之上。

1 个答案:

答案 0 :(得分: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>