企业内部URL约定


8

开发人员...我希望您对此有IT方面的看法...

我正在为我的公司构建一个新的内部Web应用程序,并开始考虑如何部署它。这里的许多现有Web应用程序都直接使用其服务器名称链接到,例如:

http://webserver123/someInternalApp/

由于多种原因,这使我感到不舒服。服务器名称更改,服务器关闭,用户不必知道服务器名称即可找到其Web应用程序。使用服务器名称可以防止我们交换服务器或添加负载平衡器。如果您认为其他原因不好,请告诉我,以便我为更改此做法提供更好的理由。

展望未来,我想在我们的内部DNS中设置一些更好的域名,这些域名将指向适当的Web服务器和应用程序。在上一份工作中,我们遵循了这样的约定:

  • 用于生产: http://someInternalApp.myCompany.com/
  • 测试: http://test.someInternalApp.myCompany.com/
  • 开发: http://dev.someInternalApp.myCompany.com/

我喜欢这个更好的,因为应用程序的名称是域名的一个重要组成部分,与开发/测试/生产环境的指定很简单。但是,我有一些保留意见:

  • 将应用程序名称放在子域中最终将创建许多长而唯一的子域。我喜欢每个应用程序都有不同的域,但是我也觉得很难管理。
  • 除了应用程序名称外,没有其他任何东西可以指定此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 2014年

Microsoft ...在Windows的IIS上运行的.Net Web应用程序
Ben Brandt 2014年

在计算机科学中,命名事物是一个难题。期望任何方案(尤其是具有自动递增的编号)在某个时刻都会失败。重定向和DNS是歧义特定名称的方法。
tedder42

Answers:


7

永远不要依赖于您的应用程序是内部还是外部。始终像开发应用程序的用户那样开发(因为它在您的控制范围之外)。

使用ENV.APPNAME.DOMAIN.TLD

与www。作为“生产”的别名。


简单而扎实的方法,我喜欢。这些天与Chrome之类的浏览器(与您的书签和历史记录同步)更加相关。如果我在Chrome中为内部工作场所应用添加了书签,则该书签将同步到我的家用PC和android设备。书签到达后,最好不要指向互联网上的其他内容。
Ben Brandt 2014年

3

如果仅部署内部,则在选择方面有很大的自由度。但是,随着最近开放的顶级域名的出现,您确实需要注意不要与即将到来的新外部名称冲突。

例如,您可以将其部署为http://contact.app/,但是如果.app TLD被注册,则可能会发现自己存在冲突。

因此,最好使用http://contact.local/http://contact.lan/

出于Apple及其Bonjour服务兼容性的原因,您最好避免使用.local,所以最好使用.lan

另外,如果您的公司名称极不可能成为TLD,那么http://contact.ourcompany/会很好用。

我会避免将应用程序名称作为子目录,因为它是不必要的,只会使其更长。虚拟主机是通过每个应用程序具有唯一URL的方式。

在避免服务器名称方面您是非常正确的,这绝对是不可以的,因为服务器来来往往。

编辑1:请参阅RFC2606,并从此处引用的可用内部使用TLD中进行选择。

就像注释的注释一样-我建议的.local和.lan不能根据上述RFC注册。出于相同的原因,您也可以使用.priv和.test。


5
在Internet上,实际上可以确保控制的唯一DNS名称空间是您拥有的第二级域的子域。任何有钱的白痴今天都可以创建TLD,因此在网络中使用任何类型的自定义TLD对我来说似乎是一个坏主意。我会使用自己公司名称的子域,并接受URL会更长的事实。
埃文·安德森

@EvanAnderson我建议一个KickStarter筹集18.5万美元的申请费,以注册.local通用顶级域名(gTLD)并就如何正确配置环境建立永久性的课程。
Sammitch 2014年

不再建议使用您不拥有的TLD或使用DNS搜索空间。请参阅ICANN名称冲突信息。
迈克尔·汉普顿2014年

1

这是基于某种观点的,因为当您仅在内部部署应用程序时,您就拥有完全的控制权,而实际上做什么都不重要……

大多数用户都会为自己需要使用的内部Web应用程序添加书签,因此请不要为自己的URL烦恼。

作为系统管理员,我会喜欢更多的应用程序,这些应用程序使我可以选择部署在可配置子目录中还是子域的根上,从而可以选择是否使用子域。

需要更加体贴的开发人员不要走“简单”路线,而只需href=/images/bullet.png在随机页面上包含硬编码(相对)引用“ ”,而不是通过许多部署/配置设置来构建引用“ href={HTTP-PROTO}://{IMG-HOST}/{IMG-BASEDIR}/bullet.png

请进行部署选择,例如任何主机名,端口号,HTTP / HTTPS配置设置中的选择,并且不要对其进行硬编码。

我经常在接收端:“管理人员希望所有内部应用程序都处于混乱状态,http://intranet/apps/因为appname.intranet这太令人困惑了。而供应商则相反;我们需要appname.intranet设备/应用程序,因为我们已针对iframe进行了内置检查,内联人-中间攻击和反向代理...

我发现很多商业Web应用程序都希望部署在Web服务器的根目录中,并且在某些随机子目录中部署时并不能保证其可靠性。即,例如,它们包括或多或少的/css/main.css子目录硬编码路径,这使得很难在同一主机上托管多个应用程序。但是,这些人似乎也不太担心代码的可移植性。


通过虚拟主机轻松解决将多个具有根本安装要求的所有应用程序安装到同一服务器上的问题,每个应用程序都有单独的DNS名称。
Ian Macintosh

对于外行人员(我当时的经理和CTO)来说,它们仍然构成多台服务器(尽管不是实际的盒子),因为它们不会显示为Intranet / apps / inventory和intranet / apps / billing。
HBruijn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.