Vik*_*ram 4 apache .htaccess mod-rewrite amazon-ec2 amazon-web-services
我已经构建了一个与golang rest api集成的angular 4的saas产品,并在AWS ec2实例上上传了该构建。我的项目是一个基于多租户的应用程序,该程序将客户仪表板加载到商人名称.mystore.com子域上,但是一些要求自定义域功能的客户应该能够将其加载到mydomain.com上。
我已经在apache2.conf文件中使用以下代码完成了子域部分,因此所有子域都从角度应用文件所在的apps文件夹中加载
<VirtualHost *:80>
ServerAlias *.mystore.com
DocumentRoot /var/www/html/apps
<Directory "/var/www/html/apps">
AllowOverride All
Require all Granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
对于自定义域功能,我在admin中有一节保存自定义域,但不确定如何实现。
我想到的可能方法是
Shopify会这样做,但不确定他们如何加载特定于商家的商店。另一个让我忙于思考的问题是我应该要求更新哪些值
在我开发和管理的许多SaaS平台上,我都有类似的设置。正如您的客户建议的那样,这种设置当然是理想的。您应该从一开始就计划在其自己的域中为每个客户站点提供服务,可能还使用* SSL。我认为,对于当今架构良好的Saas服务而言,这是最佳实践。
在阅读您的问题时,我认为您已经过度设计了它。
对于同一服务器上的自定义域Saas应用,您只需打开端口80即可访问所有流量,而无需考虑域名。将所有客户域指向app.mystore.com
,这是您应用端点的CNAME。
然后,该应用读取HTTP请求标头,并以此方式确定所请求的主机名。
最后,应用程序在其客户端数据库中查找主机名,并找到给定客户域的客户端记录。
例如,在Nxinx中,您需要做的是:
server {
listen 80 default_server;
server_name _;
root /var/www/myservice/htdocs;
}
Run Code Online (Sandbox Code Playgroud)
此服务器配置可为指向此端点的任何域提供全部捕获。
这就是Web服务器应允许其回答任何客户域的所有条件。该应用程序必须完成其余的工作。
*在此域上的应用程序上提供自定义域时,应计划为该域提供SSL端点,例如https://www.mycustomdomain.com。在您的体系结构设计中考虑这一点。如果您的应用程序故障转移到新IP,也请考虑DNS问题。
归档时间: |
|
查看次数: |
865 次 |
最近记录: |