Автор Тема: Виртуален хост за 2 домейна с едно IP  (Прочетена 2279 пъти)

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Имам следният проблем който се чудя как да го направя.
Имам 2 домейна които трябва да ги кача на сървер с едно IP.
В момента съм го организирал така:

NameVirtualHost 10.10.10.10:443                                                                   
<VirtualHost 10.10.10.10:443>                                                                     
        ServerAdmin webmaster@localhost                                                               
ServerName http://www.domain1.com                                                                         
SSLEngine on                                                                                         
<Files *.php>                                                                                         
    SetOutputFilter PHP                                                                               
    SetInputFilter PHP                                                                               
</Files>                                                                                             

SetEnvIf User-Agent ".*MSIE.*" \
   nokeepalive ssl-unclean-shutdown \
   downgrade-1.0 force-response-1.0 



        DocumentRoot /var/www/
        <Directory />         
                Options FollowSymLinks
                AllowOverride None   
        </Directory>                 
        <Directory /var/www/>         
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None                       
                Order allow,deny                         
                allow from all                           
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel debug

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


Това е първият до който се достъпва само със SSL

NameVirtualHost 10.10.10.10:80                     
<VirtualHost 10.10.10.10:80>                       
        ServerAdmin webmaster@localhost               
ServerName http://www.dmain2.org                             
SSLEngine off                                         
<Files *.php>                                         
    SetOutputFilter PHP                               
    SetInputFilter PHP                                 
</Files>                                               

AddHandler cgi-script .cgi .pl
<Files ~ "\.pl$">             
Options +ExecCGI             
</Files>                     
<Files ~ "\.cgi$">           
Options +ExecCGI             
</Files>                     


<Location /var/www/uc-zone/YaBB_2.4/cgi-bin/>
SetHandler perl-script                       
PerlHandler ModPerl::Registry               
Options +ExecCGI                             
</Location>                                 

##SetEnvIf User-Agent ".*MSIE.*" \
##   nokeepalive ssl-unclean-shutdown \
##   downgrade-1.0 force-response-1.0 



        DocumentRoot /var/www/uc-zone
        <Directory />               
                Options FollowSymLinks
                AllowOverride None   
        </Directory>                 
        <Directory /var/www/>         
                Options Indexes FollowSymLinks MultiViews +ExecCGI
                AllowOverride None                               
                Order allow,deny                                 
                allow from all                                   
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel notice

        CustomLog /var/log/apache2/access.log combined
#       ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


По този начин ги цепя на портове, но ми се иска да имам и двата типа връзки към двата домейна. Тоест http и https. Може ли някой да ми подхвърли идея как да стане.

Опс пропуснах, имам и редиректване във PHP скрипта където проверявам с какво име е извикан сайта. Иска ми се за потребителя на всеки домейн да не разбира че съществува и друг виртуален домеин на същата машина. От страна на domain1.com не е толкова критично но от domain2.org е критично да не се разбира за domain1.com.
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #1 -: May 18, 2009, 23:02 »
Тема за размисъл: http://httpd.apache.org/docs/2.2/vhosts/
Активен

0x2B|~0x2B

mbb

  • Напреднали
  • *****
  • Публикации: 28
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #2 -: May 19, 2009, 08:40 »
Някъде в httpd.conf трябва да имаш:
Listen  10.10.10.10:80
Listen  10.10.10.10:443

Но в този случай няма да са два сайта- https://www.domain1.com и http://www.domain2.org, а само примерно https://www.domain1.com и http://www.domain1.com. Освен това някъде в DNS трябва да си описал domain1.com на кай адрес е разположен. Въобще, както romeo_ninov ти е посочил, първо си изясни точни какво желаеш и тогава четене му е майката...
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #3 -: May 19, 2009, 20:14 »
Тема за размисъл: http://httpd.apache.org/docs/2.2/vhosts/
А какво става ако напишеш IP-то в адреса - при мене отваря това дето не ми се ще да се отваря. За сега немога да ги разделя успешно (без да ползвам PHP код), другият проблем е със сертификатите (самоподписани са разбира се).
За сега успявам да разбера с прости средства че има виртуален хост.
А защо държа да не се разбира - в единят домеин е фирмено счетоводство а другият е за публичен достъп. Неискат да ми дадат още едно реално IP и проблема се заформи.
Много ми се опря тази проста настройка.
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #4 -: May 19, 2009, 23:07 »
Тема за размисъл: http://httpd.apache.org/docs/2.2/vhosts/
А какво става ако напишеш IP-то в адреса - при мене отваря това дето не ми се ще да се отваря. За сега немога да ги разделя успешно (без да ползвам PHP код), другият проблем е със сертификатите (самоподписани са разбира се).
За сега успявам да разбера с прости средства че има виртуален хост.
А защо държа да не се разбира - в единят домеин е фирмено счетоводство а другият е за публичен достъп. Неискат да ми дадат още едно реално IP и проблема се заформи.
Много ми се опря тази проста настройка.
Размени местата на двата домейна. И/или пусни единия само по SSL
Активен

0x2B|~0x2B

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #5 -: May 20, 2009, 00:21 »
Не можеш да имаш 2 виртуални хоста bind-нати на един и същ адрес и порт и да работят с два различни SSL сертификата. За това си има една много ама много проста причина. Когато един клиент установява HTTPS връзка, първо минава през SSL negotiation, чак след това засилва HTTP request-a, където е Host: хедъра, според който сървъра евентуално би разбрал за кой виртуален хост е заявката. Разбира се, докато се получи Host: хедъра, клиента и сървъра вече са си обменили публичните ключове.

Можеш да имаш два виртуални хоста на един адрес, но на различни портове. Примерно единият ще се достъпва на https://virtualhost1 а вторият на https://virtualhost2:444.

Активен

"Knowledge is power" - France is Bacon

Lucifer

  • Напреднали
  • *****
  • Публикации: 103
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #6 -: May 20, 2009, 16:12 »
Я да ти дам една много проста идея:


<VirtualHost 10.10.10.10:80>                       
        ServerAdmin webmaster@localhost               
        ServerName http://www.dmain2.org
....................................
</VirtualHost>


<VirtualHost *:443>                                                                     
        ServerAdmin webmaster@localhost                                                               
        ServerName http://www.domain1.com
       DocumentRoot /var/www/
 ...........................
</VirtualHost>

При мене е изпълнено с субдомейни, но идеята е подобна. mail.domain.com е SSL, иначе *.domain.com е нормално.
« Последна редакция: May 20, 2009, 16:13 от Lucifer »
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #7 -: May 20, 2009, 19:59 »
Не можеш да имаш 2 виртуални хоста bind-нати на един и същ адрес и порт и да работят с два различни SSL сертификата.
Точно това е проблема. В този случай с PHP код го решавам (разбира се сертификатите стенат но така или иначе са само за да криптират връзката), като проверявам името на хоста и порта.
Надявах се да има по добро решение което да не го знам но вече 5 дни си играя и търся но на всякъде е казано същото. Благодаря ви много за идеите.
И последното което се сещам - понеже съм много бос в ДНС настройките.
Може ли да се зададе в DNS настройките в host bulgaria като напиша в браузера http://www.domаin1.com да се свързва с http://10.10.10.10:81 тоест да изисква порт различен от стандартният 80, а http://www.domаin2.com да се свързва с http://10.10.10.10:80 . Както и за другият протокол https://www.domаin1.com да ме свързва към порт 412 примерно.
С две думи потребителя да не указва изрично порта. Със PHP го редиректвам без проблем. Въпроса е да махна тези редиректвания и проверки. Подозирам че е безнадеждно да стане.
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #8 -: May 20, 2009, 22:43 »
Не можеш да имаш 2 виртуални хоста bind-нати на един и същ адрес и порт и да работят с два различни SSL сертификата.
Точно това е проблема. В този случай с PHP код го решавам (разбира се сертификатите стенат но така или иначе са само за да криптират връзката), като проверявам името на хоста и порта.
Надявах се да има по добро решение което да не го знам но вече 5 дни си играя и търся но на всякъде е казано същото. Благодаря ви много за идеите.
И последното което се сещам - понеже съм много бос в ДНС настройките.
Може ли да се зададе в DNS настройките в host bulgaria като напиша в браузера http://www.domаin1.com да се свързва с http://10.10.10.10:81 тоест да изисква порт различен от стандартният 80, а http://www.domаin2.com да се свързва с http://10.10.10.10:80 . Както и за другият протокол https://www.domаin1.com да ме свързва към порт 412 примерно.
С две думи потребителя да не указва изрично порта. Със PHP го редиректвам без проблем. Въпроса е да махна тези редиректвания и проверки. Подозирам че е безнадеждно да стане.
Не, DNS е свързан само с IP  адресите
Активен

0x2B|~0x2B

Bogo

  • Напреднали
  • *****
  • Публикации: 632
  • Distribution: Debian
  • Window Manager: cmd
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #9 -: May 22, 2009, 07:22 »
И последното което се сещам - понеже съм много бос в ДНС настройките.
Да това е така и затова ти е тази каша в главата.
Затова няма да ти давам съвет как да го направиш ((порт 80 > към порт 81) (защото всичко което напишеш в браузъра означава че търсиш порт 80))
Защото трябва да разбереш как работи ДНС и това че хостинг компанийте ако на всеки хост клиент даваха различен порт? Колко клиенти щяха да имат?

А какво прави ДНС ли?
Ами един огромен куп домейни ги праща към едно и също ай-пи (ай-пи то на сървъра)
Но там вече се разпорежда Apache и казва кой домейн в коя директория е.
Елементарно, нали?
« Последна редакция: May 22, 2009, 07:28 от Bogo »
Активен

live free or die хард :)

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #10 -: May 22, 2009, 23:57 »
Не можеш да имаш 2 виртуални хоста bind-нати на един и същ адрес и порт и да работят с два различни SSL сертификата.
Точно това е проблема. В този случай с PHP код го решавам (разбира се сертификатите стенат но така или иначе са само за да криптират връзката), като проверявам името на хоста и порта.
Надявах се да има по добро решение което да не го знам но вече 5 дни си играя и търся но на всякъде е казано същото. Благодаря ви много за идеите.
И последното което се сещам - понеже съм много бос в ДНС настройките.
Може ли да се зададе в DNS настройките в host bulgaria като напиша в браузера http://www.domаin1.com да се свързва с http://10.10.10.10:81 тоест да изисква порт различен от стандартният 80, а http://www.domаin2.com да се свързва с http://10.10.10.10:80 . Както и за другият протокол https://www.domаin1.com да ме свързва към порт 412 примерно.
С две думи потребителя да не указва изрично порта. Със PHP го редиректвам без проблем. Въпроса е да махна тези редиректвания и проверки. Подозирам че е безнадеждно да стане.
Дойде ми проста идея: слагаш на реалния хост (достъпен и по ИП) някаква празна страница и забиваш и двата хоста като виртуални. Така даже и някой да отвори сървъра по ИП ще намери нищо :)
Активен

0x2B|~0x2B

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Виртуален хост за 2 домейна с едно IP
« Отговор #11 -: May 23, 2009, 15:02 »
Не можеш да имаш 2 виртуални хоста bind-нати на един и същ адрес и порт и да работят с два различни SSL сертификата.
Точно това е проблема. В този случай с PHP код го решавам (разбира се сертификатите стенат но така или иначе са само за да криптират връзката), като проверявам името на хоста и порта.
Надявах се да има по добро решение което да не го знам но вече 5 дни си играя и търся но на всякъде е казано същото. Благодаря ви много за идеите.
И последното което се сещам - понеже съм много бос в ДНС настройките.
Може ли да се зададе в DNS настройките в host bulgaria като напиша в браузера http://www.domаin1.com да се свързва с http://10.10.10.10:81 тоест да изисква порт различен от стандартният 80, а http://www.domаin2.com да се свързва с http://10.10.10.10:80 . Както и за другият протокол https://www.domаin1.com да ме свързва към порт 412 примерно.
С две думи потребителя да не указва изрично порта. Със PHP го редиректвам без проблем. Въпроса е да махна тези редиректвания и проверки. Подозирам че е безнадеждно да стане.
Дойде ми проста идея: слагаш на реалния хост (достъпен и по ИП) някаква празна страница и забиваш и двата хоста като виртуални. Така даже и някой да отвори сървъра по ИП ще намери нищо :)
Точно това съм направил в момента с PHP. Проблем е само със сертификатите за SSL. И дали е това вярното решение - явно само така става номера.
За SSL за втория сайт ще го преглътна някакси.
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"