【问题标题】:Is it possible to use the same node.js server for two/three different domains (aliases)?是否可以为两个/三个不同的域(别名)使用相同的 node.js 服务器?
【发布时间】:2018-08-19 17:17:05
【问题描述】:

是否可以为两个/三个不同的域(别名)使用相同的 nodeJS 服务器? (我不想重定向我的用户。我希望他们看到他们在地址栏中输入的确切 URL。但是,所有三个域都完全相同!)

我希望我的用户同时登录所有三个域,以避免任何混淆。

执行此操作并避免跨域问题的最简单方法是什么?

谢谢!

【问题讨论】:

  • 如果您使用的是基于子域的网站命名系统,那么您可以将登录 cookie 绑定到顶级域。这样用户就可以同时登录到所有 3 个网站
  • @TheChetan 目前所有三个域都不同,例如:elgato.com lechat.com thecat.com 谢谢!
  • @Emilio,如果我的回答有帮助,如果您能接受并奖励赏金,我将不胜感激;如果你在接下来的 2 小时内什么都不做,那么至少一半的赏金将永远失去。

标签: node.js nginx cross-domain


【解决方案1】:

如果您的意思是所有域都将为同一个 nodejs 应用程序提供服务,那么是的,您可以这样做。

但如果每个域都应该打开不同的应用程序,那么您必须在服务器上运行反向代理来处理和管理站点/虚拟主机。

您可以安装 nginx 并将其用作反向代理服务器或寻找 http-proxy 一个 nodejs 的库。

如果您想管理应用程序中的虚拟主机,您可以寻找 nodejs 的虚拟主机中间件并使用它

【讨论】:

  • cookie 没有危险?那么当用户登录其中一个域时,他会自动登录所有域?
  • 您可以检查域名并将其保存在cookies中
  • 你这是什么意思?
  • 如果用户登录一个域,您是否希望用户自动登录所有域?
  • 正是,这就是我想要的,因为这三个都是完全相同的应用程序(相同的网站)。只是地址栏中显示的域名不同。
【解决方案2】:

选择以下之一:

使用其他服务器 (like nginx) 作为反向代理。

使用node-http-proxy 作为反向代理。

如果可以从相同的 Connect/Express 代码库和 node.js 实例为每个域提供服务,请使用 vhost middleware

【讨论】:

  • cookie 没有危险?那么当用户登录其中一个域时,他会自动登录所有域?
【解决方案3】:

这是一个非常广泛的问题。此外,就 SEO 而言,拥有多个独立域且每个域都提供相同的内容通常是一个非常糟糕的主意。

登录通常是通过 Cookie 或通过 URL 中的额外参数完成的。出于明显的安全原因,Cookie 始终是特定于域的。如果您想确保人们一次登录到所有域,您可以创建一个内部目的驱动的域来处理身份验证(没有这样的域显示在 URL 栏中,并且仅用于 HTTP 重定向,有效);这样的域将存储所有其余的登录状态,其余的将通过这种目的驱动的域(通过 HTTP 重定向)获取登录状态。

不过,总的来说,这听起来太麻烦了。考虑到,也许某些用户特别想为不同的帐户使用不同的域,因此,如果您要求所有用户都使用一个登录名,那么您将有效地破坏他们的使用。而且,回到原点,这样做对 SEO 非常不利,所以,不要这样做。

【讨论】:

  • 假设我有三个域。 thecat.com、elgato.com、lechat.com。事实上,这三个网站都是一样的。但是,我希望我的西班牙用户看到西班牙语的 URL,我的法语用户看到法语的 URL,我的英语用户看到英语的 URL。 // 如果我只允许 Google 在法语 URL 上查看法语内容、在英语 URL 上查看英语内容以及在西班牙语 URL 上查看西班牙语内容,我不确定这对我的 SEO 有什么影响。
  • 现在网站已经设置好,当用户切换语言时,他们会停留在同一个 URL 上。也许我应该只让他们看到英文网址上的英文内容,西班牙文网址上的西班牙文内容等等。你怎么看?
  • @Emilio,嗯,是的,那么它的内容就不一样了。允许查看每个域上的不同版本是有意义的。我不太确定是否需要单次登录;这有点取决于业务的集成程度。
猜你喜欢
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多