Динамические поддомены — ColdFusion 11

Кто-нибудь знает способ создания динамических поддоменов в coldfusion 11 без необходимости добавлять их на DNS-сервер?

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

ex: client1.example.com client2.example.com

person Geo    schedule 15.07.2015    source источник
comment
Это может помочь. serverfault.com/questions/63200 / Логика есть, но это будет сложно, если вы не используете Apache.   -  person TRose    schedule 16.07.2015
comment
Ваш сайт находится на сервере IIS?   -  person rrk    schedule 17.07.2015
comment
@RejithRKrishnan да, это так. Я попробую ваше решение ниже и дам вам знать. Спасибо!   -  person Geo    schedule 20.07.2015


Ответы (1)


Это работает, если ваш сайт размещен на сервере Windows IIS.

Если вы используете IIS, вам может помочь следующее. Используйте циклы и условия в соответствии с вашими требованиями.

<!--- Provide you IIS SiteName --->
<cfset siteName = "Your IIS Site Name">
<!--- Your new domain address --->
<cfset newSiteBinding = "client2.example.com">
<!--- your port address --->
<cfset newSitePort = 80>
<cfset fileID = createUUID()>
<cfsavecontent variable="ex"><cfoutput>cd %windir%\system32\inetsrv
%windir%\system32\inetsrv\APPCMD set site /site.name: #siteName# /+bindings.[protocol='http',bindingInformation='*:#newSitePort#:#newSiteBinding#']</cfoutput>
</cfsavecontent>
<cffile  action = "write"
    file = "E:\#fileID#.bat"
    output = "#ex#"
/>

<cfexecute  name="E:\#fileID#.bat"
    arguments="/c set"
    variable="data"
    timeout="10" 
/>

<cffile  action = "delete"
    file = "E:\#fileID#.bat"
>

Что мы в основном делаем, так это то, что мы создаем файл .bat и выполняем его, используя cfexecute. Обратите внимание, что вам нужно быть осторожным с путями, потому что структура каталогов на вашем сервере может отличаться.

Пример содержимого файла .BAT

cd %windir%\system32\inetsrv
%windir%\system32\inetsrv\APPCMD set site /site.name: example /+bindings.[protocol='http',bindingInformation='client2.example.com:80:*']

Как работает команда. Обратите внимание на + в /+bindings?

Это означает добавление новой привязки, а /-bindings пытается удалить существующую привязку.

person rrk    schedule 17.07.2015
comment
Итак, это создает привязки для каждого из моих пользователей, если я правильно понимаю? В чем разница, если я просто добавлю имена пользователей вручную в качестве привязок к IIS? - person Geo; 22.07.2015
comment
@ Гео, я не уверен. Я не думаю, что в случае привязки веб-сайтов IIS к пользователям есть какое-то отношение. Единственное, что необходимо, это чтобы у coldfusion были административные привилегии для выполнения команды. - person rrk; 22.07.2015