2013-03-03 5 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> 

Очевидно, что это не работает, так как перейти на сайт попадает в первый и он никогда не идет на второй. Итак, мой вопрос заключается в том, как мне настроить это, чтобы я мог разместить 2 веб-сайта на порту 80. Возможно, я мог бы сделать как localhost/site1 и localhost/site2, и понять это так, но независимо от того, что я пытаюсь, Кажется, это работает.

Я играл с свойством ServerName, но я действительно не понимаю, как это может работать, установка его, похоже, не меняется, что попадание в ip этой машины показывает только первый веб-сайт, и я не знаете, где использование ServerName влияет на что-либо.

Любые предложения, или дайте мне знать, если мне нужно предоставить дополнительную информацию.

Также обратите внимание, что оба они работают, если я меняю второй на порт 8080, но при этом я не могу поместить доменное имя поверх myip: 8080.

+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> 
+0

Итак, скажем, мой ip равен 1.2.3.4, как бы это сделать, чтобы я мог получить доступ к каждому сайту по-другому? –

+1

Вам необходимо будет зарегистрировать как site1.ltd, так и site2.ltd, указывая на ip 1.2.3.4. Затем люди, которые посещают сайт2.ltd, будут перенаправлены на ваш сервер, и ваш сервер узнает (через заголовки HTTP-запроса), чтобы обслуживать только второй сайт. –

+0

Итак, как только я укажу доменное имя на этот адрес, он будет знать, для чего будет решаться на основе используемого имени домена, но если я пойду прямо на адрес, он будет только первым? Я полагаю, что это имеет смысл, я посмотрю, работает ли это (хотя для изменения времени, требуемого для моего доменного имени, требуется час) –

Смежные вопросы