Соглашения о внутренних URL-адресах предприятия

8

разработчик здесь ... Я хотел бы, чтобы ваш взгляд на это ...

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

http://webserver123/someInternalApp/

Это заставляет меня чувствовать себя неловко по разным причинам. Имена серверов меняются, серверы отключаются, и пользователям не нужно знать имена серверов, чтобы найти свое веб-приложение. Использование имен серверов не позволяет нам менять серверы или добавлять балансировщики нагрузки. Если вы можете подумать о других причинах, это плохо, дайте мне знать, чтобы я мог лучше объяснить эту практику.

В дальнейшем я хотел бы настроить несколько лучших доменных имен в нашем внутреннем DNS, которые будут указывать на соответствующий веб-сервер и приложение. В моей последней работе мы следовали соглашению примерно так:

  • Для производства: http://someInternalApp.myCompany.com/
  • Для теста: http://test.someInternalApp.myCompany.com/
  • Для разработки: http://dev.someInternalApp.myCompany.com/

Мне это нравится больше , так как имя приложения является ключевой частью имени домена, а обозначение среды dev / test / prod очень просто. Тем не менее, у меня есть некоторые оговорки:

  • Размещение имени приложения в поддомене в конечном итоге приведет к созданию множества длинных уникальных поддоменов. Мне нравится иметь разные домены для каждого приложения, но я также чувствую, что им может быть сложно управлять.
  • Кроме имени приложения, ничто не указывает на то, что этот URL-адрес является только внутренним. Я читал о других организациях, использующих поддомен, такой как «corp.myCompany.com» или «int.myCompany.com», что может быть хорошо. Я не хочу, чтобы у пользователей создавалось впечатление, что они могут получить к ним доступ из дома.

Вот несколько вариантов того, к чему я склоняюсь для внутренних доменных имен:

Имя приложения во внутреннем поддомене: (они становятся немного длинными, но я думаю, что все упаковано вместе)

  • http://someInternalApp.corp.myCompany.com/
  • http://dev.someInternalApp.corp.myCompany.com/

Имя приложения в качестве подкаталога: (более короткое имя домена, но оно подразумевает, что все приложения являются частью одного унифицированного сайта, которым они могут не быть, и это отсоединяет обозначение среды от приложения)

  • http://corp.myCompany.com/someInternalApp
  • http://dev.corp.myCompany.com/someInternalApp

Итак, давайте обсудим ... Что вы думаете об этих вариантах? Есть ли что-то лучшее или более распространенное, что я, возможно, пропустил? У меня есть возможность направить свою компанию в этом направлении лучше, поэтому я хотел бы найти хорошую рекомендацию.

Спасибо!

Бен Брандт
источник
Трюки с DNS, перезапись URL-адресов и виртуальный хостинг - ваши друзья здесь. Будет ли это в стеке Microsoft или Linux?
ewwhite
Microsoft ... .Net веб-приложения, работающие на IIS в Windows
Бен Брандт
называть вещи - сложная проблема в информатике. Ожидайте, что любая схема (особенно с автоматически увеличенными числами) потерпит неудачу в некоторый момент. Перенаправления и DNS - это способ двусмысленности определенных имен.
tedder42

Ответы:

7

Никогда не полагайтесь на то, будет ли ваше приложение внутренним или внешним. Всегда развивайтесь так, как будто аудитория приложения будет вне вашего контроля (потому что это так).

Перейти с ENV.APPNAME.DOMAIN.TLD

С www. как псевдоним для «производства».

Крис Макколл
источник
Простой и солидный подход, мне это нравится. Все более актуально в наши дни с такими браузерами, как Chrome, которые синхронизируют ваши закладки и историю. Если я добавлю в закладки приложение для внутреннего рабочего места в Chrome, эта закладка будет синхронизирована с моим домашним ПК и моим устройством Android. Как только закладка попадет туда, лучше не указывать на что-то другое в Интернете.
Бен Брандт
3

Если вы развертываете только внутреннее, у вас есть большая свобода выбора. Однако с открытием доменов верхнего уровня, как и в последнее время, вы хотите позаботиться о том, чтобы не вступать в конфликт с предстоящим новым внешним именем.

Например, вы можете развернуть как http://contact.app/, но если домен верхнего уровня .app будет зарегистрирован, вы можете столкнуться с конфликтом.

Таким образом, вы, вероятно, лучше всего использовать что-то вроде http: //contact.local/ или http: //contact.lan/

По причинам Apple и их совместимости с сервисом Bonjour лучше избегать .local, поэтому, возможно, используйте .lan

В качестве альтернативы просто http: //contact.ourcompany/ будет работать очень хорошо, если название вашей компании вряд ли когда-либо станет ДВУ.

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

И вы совершенно правильно избегаете имен серверов, это определенно нет-нет, потому что серверы приходят и уходят.

Изменить 1 : См. RFC2606 и выберите из доступного TLD внутреннего использования, на который есть ссылка.

Так же, как примечание к комментариям - .local и .lan, как я рекомендую, не регистрируются согласно вышеуказанному RFC. Вы можете использовать .priv и .test по тем же причинам.

Ян Макинтош
источник
5
Единственное пространство имен DNS, которое вы можете практически гарантировать в Интернете, это субдомены домена второго уровня, которым вы владеете. Любой идиот с деньгами может создать TLD сегодня, поэтому использование любого вида TLD внутри сети кажется мне плохой идеей. Я бы пошел с поддоменами названия моей собственной компании и согласился бы с тем, что URL будут длиннее.
Эван Андерсон
@EvanAnderson Я предлагаю KickStarter собрать 185 тыс. Долл. США за регистрационный взнос за регистрацию .localрДВУ и провести постоянный урок о том, как правильно настроить свою среду.
Sammitch
Больше не рекомендуется использовать TLD, который вам не принадлежит, или использовать пространства поиска DNS. См. Информацию о столкновении имен ICANN .
Майкл Хэмптон
1

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

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

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

Требуется более внимательный разработчик, чтобы не идти «легким» путем и просто включить жестко (относительную) ссылку « href=/images/bullet.png» на случайную страницу, а не создавать ссылку из ряда параметров развертывания / конфигурации href={HTTP-PROTO}://{IMG-HOST}/{IMG-BASEDIR}/bullet.png».

Пожалуйста, сделайте свой выбор развертывания, такой как любые имена хоста, номера портов, выбор в настройках конфигурации HTTP / HTTPS и не задавайте их жестко.

Я часто был на стороне получателя: «Руководство хочет, чтобы все внутренние приложения находились под угрозой, http://intranet/apps/потому что appname.intranetэто слишком запутанно. И наоборот, от наших поставщиков; нам нужно appname.intranetнаше устройство / приложение, так как мы встроили проверку на iframes, вставляя man-in-the-in». - средние атаки и обратное проксирование ....

Я обнаружил, что многие коммерческие веб-приложения ожидают развертывания в корневом каталоге веб-сервера и не работают слишком надежно при развертывании в некотором случайном подкаталоге. Т.е. они включают, например, более или менее жестко закодированные пути к /css/main.cssподкаталогам, что затрудняет размещение нескольких приложений на одном хосте. Но многие из них не слишком обеспокоены переносимостью своего кода.

HBruijn
источник
Установка нескольких приложений, для которых у всех есть требование установки root, на одном сервере тривиально решается с помощью виртуального хостинга с отдельным DNS-именем для каждого приложения.
Ян Макинтош
Для непрофессионала (мой тогдашний менеджер и технический директор), который по-прежнему работает на нескольких серверах (хотя и не на реальных блоках) в том смысле, что они не отображаются как интранет / приложения / инвентарь и интранет / приложения / биллинг.
HBruijn