Я могу перейти на веб-сайт Fog Creek, настроить новую учетную запись, и они немедленно назначат мне URL-адрес, например mycompany.fogbugz.com (где mycompany - это то, что я придумал, а не какое-то значение, присвоенное Fog Ручей). Я могу делать то же самое с Beanstalk и многими другими поставщиками. Я искал в Google, пытаясь понять, как именно это работает.
1: В приведенном выше примере, настроен ли mycompany.fogbugz.com в DNS каким-то особым образом, кроме того, как можно было бы настроить ванильный домен www.foo.com?
2: Предполагая, что Fog Creek использует Tomcat (что, я уверен, НЕ правда, но представьте, что это так), вероятно, они создали подкаталог tomcat / webapps / mycompany на своем сервере? Или есть более простой способ справиться с этим?
Я явно не мастер DNS или TC. Любое понимание ценится. С Новым Годом!
Это то, что называется поддоменом с подстановочными знаками (в DNS), который затем обрабатывается с помощью перезаписи URL.
Поддомен с подстановочными знаками выглядит так:
*.domain.tld. IN A 1.2.3.4
Затем вы можете настроить apache для приема запросов на любой поддомен:
<VirtualHost 111.22.33.55>
DocumentRoot /www/subdomain
ServerName www.domain.tld
ServerAlias *.domain.tld
</VirtualHost>
Затем вы можете использовать mod_rewrite для перенаправления трафика на одном из этих поддоменов во вложенную папку или строку запроса. Что-то вроде этого:
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC]
RewriteRule (.*) %2/$1 [L]
Я не знаю о tomcat, но в IIS, если веб-сайт настроен на IP-адрес (т.е. без определенного заголовка хоста / поддомена), все поддомены будут указывать на один и тот же сайт (не уверен в точной терминологии здесь)
Если это так, вы можете программно обнаружить субдомен и соответствующим образом отреагировать.
Один примерный способ сделать это: subdomain_fu, который является обработчиком поддомена для рельсов, объясненный в этом скринкасте: http://media.railscasts.com/videos/123_subdomains.mov.
Концептуально: вы можете настроить apache с псевдонимом сервера для всех поддоменов, а затем выполнять обработку поддоменов в рамках своей веб-фреймворка.