Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >允许用户将他们的域名指向我的服务

允许用户将他们的域名指向我的服务
EN

Stack Overflow用户
提问于 2022-07-26 08:06:37
回答 3查看 235关注 0票数 5

我通过client.example.com将我的服务提供给我的用户,下面的页面如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
client.mysite.com/blog
client.mysite.com/blog/content/ 
client.mysite.com/docs/ 

等。

我希望允许用户允许他们的域指向这个子域。

因此,他们可以在以下1种选择中任意一种选择:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  client.com -> client.example.com
  sub.client.com -> client.example.com
  client.com/sub/ -> client.example.com

页面应该自动工作,就像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 client.com/blog -> client.example.com/blog
 sub.client.com/blog -> client.example.com/blog
 client.com/sub/blog -> client.example.com/blog

另外,我在Amazon中使用ElasticBean秸秆来使用nginx (Docker )部署我的React应用程序。在我开始之前,我想知道这是否可能,我也不想给我的客户固定的IP地址,以防我失去那个IP。blogger.com、wordpress.com等大公司是如何做到这一点的?

据我所研究,我知道cname可以允许客户端子域,我们需要命名域的IP地址。它没有提到那个文件夹。对于SSL,我可以使用LetsEncrypt。

我对任何类似CloudFlare / Route53方法都没意见。

EN

回答 3

Stack Overflow用户

发布于 2022-07-27 03:11:04

用于SaaS的云彩是为这个用例设计的。您只需转到Cloudflare仪表板> You域(example.com)、->、SSL、->、自定义主机名。添加客户端将链接到的回退主机名,例如ssl.example.com

然后客户端需要在您的应用程序中添加他或她的自定义主机名,然后通过自己的DNS提供程序添加一个CNAME (指向ssl.example.com)和TXT记录来链接和验证他的自定义域。验证和颁发一个新的SSL需要几分钟时间,完全由Cloudflare处理,从此,客户端可以通过自定义主机名(例如client.comsub.client.comclient.com/blog等)访问您的服务。

如果您需要在HTTP响应通过客户的主机名时操作它,也可以通过一个CLoudflare工作脚本(链接到*/* -所有主机名/URL)路由这些请求。

下面是一个示例,说明如何以编程方式创建自定义主机名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as Cloudlfare from "cloudflare-client";

// Initialize custom hostnames client for Cloudlfare
const customHostnames = Cloudflare.customHostnames({
  zoneId: process.env.CLOUDFLARE_ZONE_ID,
  accessToken: process.env.CLOUDFLARE_API_TOKEN,
});

// Add the client's custom hostname record to Cloudflare
const record = await customHostnames.create(
  hostname: "www.client.com",
  ssl: {
    method: "txt",
    type: "dv",
    settings: {
      min_tls_version: "1.0",
    },
  }
);

// Fetch the status of the custom hostname
const status = await customHostnames.get(record.id);
// => { id: "xxx", status: "pending", ... } including TXT records

定价

用于SaaS的CF免费提供100个主机名和$0.10/hostname/mo (来源)。

基于路径的URL转发

如果您需要将HTTP流量转发到不同的端点,例如www.client.com/* (客户域)到web.example.com (SaaS端点),www.client.com/blog/*blog.example.com等等。

您可以通过创建一个具有路由处理*/*请求(所有客户主机名和所有URL路径)的Cloudfalre工作者脚本来实现这一点,该脚本看起来类似于以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  fetch(req, env, ctx) {
    const url = new URL(req.url);
    const { pathname, search } = url;

    if (url.pathname === "/blog" || url.pathname.startsWith("/blog/")) {
      return fetch(`https://blog.example.com${pathname}${search}`, req);
    }

    return fetch(`https://web.example.com${pathname}${search}`;
  }
}

参考文献

票数 5
EN

Stack Overflow用户

发布于 2022-07-28 20:58:07

对此,我已经在scale (10,000+客户端)中实现了最简单的方法,就是:

DNS

  1. 让客户端为特定的client.example.com或一般clients.example.com创建CNAME记录。这既适用于根(设置别名记录),也适用于子域-- IP地址是,而不是,也不是推荐的,因为它不缩放。
  2. 创建一个数据库条目,注册/链接将其域/子域显式链接到其帐户。
  3. 后端控制器中有逻辑,将请求中的主机名与特定客户端(安全措施)相关联,以服务相关内容。

上面的例子实现了前两个用例--它允许客户机将根域或子域链接到您的服务。

要实现第三个用例,可以允许客户端为服务在其中运行指定任意根路径。如果客户端选择此操作,则还需要处理重定向到它们在其域中的其他服务。然而,这对你的应用来说是一个很大的责任。

您可以只是利用他们的注册员,大多数注册人有能力进行路径重定向-这是最简单的方法,需要最少的责任/维护在你的一端。

我还建议有一个选项,用于将所有入口点(即:根域、子域、根domain+path、subdomain+path)重定向到主入口点(即:根域+路径)。

注意:您还可以使用一个服务,比如wwwizer,它可以重定向到如果您的客户端根域上的别名选项不可用时指定的www。

SSL

我建议使用我们加密的ACMEv2 API为您的服务上设置的任何域启用SSL。有可用的,您应该能够。

值得一提的是挑战--它可以通过DNS或HTTP发生。当您决定的库对新证书提出请求时,我们将通过发出请求来响应,以确保您控制域(通过检查DNS记录中的预定唯一散列)或控制它所指向的服务器(通过检查HTTP路径以获得预定的唯一散列)。这意味着您需要确保您的客户端要么在他们的DNS中包含您指定的哈希,要么您公开一个遵循ACME v2挑战响应协议(由您选择的库处理)的路由。

下面是一个示例库,如果您构建的服务是基于python的,它支持上面提到的所有特性,并且还包括一个cli:https://github.com/komuw/sewer

参考文献

https://help.ns1.com/hc/en-us/articles/360017511293-What-is-the-difference-between-CNAME-and-ALIAS-records-

https://letsencrypt.org/docs/client-options/

https://datatracker.ietf.org/doc/html/rfc8555

http://wwwizer.com

票数 2
EN

Stack Overflow用户

发布于 2022-08-02 20:16:40

我想你要问的是如何让客户拥有他们自己的域名,拥有一个指向您网站的子域,并以某种方式提供相应的证书。但从安全的角度来看,海事组织没有安全的办法。以下是我的一些解决办法--你可以这样做:

您管理子域的DNS

您的客户可以为您拥有的公共Route53发行版创建一个NS记录。然后,该子域将有效地属于您,您可以在其子域中创建DNS记录,并在ACM中创建证书,您可以在Cloudfront分发版中使用这些证书。您可以在一个证书中拥有多个FQDN,这样就不必有多个发行版了。您还需要将域添加到发行版中的别名中。

客户端管理自己的DNS,但您告诉他们要做什么。

我不确定这是否有效,因为我还没有尝试过,但是在对ACM证书的DNS验证中,您可以看到您需要创建的记录,您可以告诉客户端他们需要为AWS创建的CNAME记录,以便为给定的域(即sub.client.com )颁发证书,他们还需要创建CNAME以指向您的网站。这样,客户端仍然管理自己的DNS。

进口证书

您可以让您的客户为您创建一个证书,然后您可以导入它。他们还需要创建CNAME记录来指向您的网站。再一次,他们需要创建一个CNAME来指向您的站点。可能最不安全,证书将需要手动旋转。

云锋

您的客户可以使用您的网站作为一个起源在他们自己的Cloudfront发行,有点讨厌,但会工作。我不认为这与不断增长的顾客有关系。

摘要

我不喜欢这些解决方案中的任何一种,它们都很混乱,很可能不符合安全标准,而且很难实现自动化。并不是说你不可能这样做。我建议您为您自己的域创建子域,或者将您自己视为一个托管公司,然后您将代表他们拥有/管理您的客户域,这样就更容易了。但是,在国际海事组织看来,拥有一个域名,然后把控制权交给它,或者转让证书是没有意义的。如果客户需要持有某些证书,或者需要持有这些证书,例如SOC2,您就会遇到麻烦。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73126594

复制
相关文章
JSON数据获取指南!
在互联网时代,数据是金钱的来源。然而,要从海量的网页中提取需要的数据并不容易。本文将带你了解如何使用Node.js编写简易爬虫程序,帮助你轻松获取并处理JSON数据,让你不再为数据发愁。
用户614136809
2023/09/25
3840
jsonp获取json数据
这两天做微信端JS接口,当时遇到的第一个问题就是权限验证的参数请求,当你请求access_token等的时候,就会存在跨域问题:然后在网上查了,采用ajax的jsonp进行跨域请求,后来报错了,返回的结果错误。然后认真看了一下文档,发现ajax的jsonp返回的数据是callback(json),卡到这里。最后同时为了安全的考虑,我就将这一部分的权限验证参数在后端做,然后前端请求,这样就避免了跨域,同时将安全考虑进去了。
Rattenking
2021/01/29
2.4K0
burpsuite 无法获取本地数据
当Firefox和burpsuite设置代理地址127.0.0.1,端口:80内容可以显示在firefox网页而无法在burpsuite显示,求教是什么原因?
用户7446386
2020/06/09
2.2K0
Jquery 使用getJSON 获取json数据
1.先引用jq获取下载到本地 CDN地址:https://code.jquery.com/jquery-latest.js
Alone88
2019/10/22
3.5K0
zabbix的server无法获取数据
背景 部署完Zabbix agent之后,Server无法获取到数据 报错 服务端 [root@hf-01 ~]# zabbix_get -s 192.168.202.131 -p 10050 -k 'my.estab.count' zabbix_get [3088]: Get value error: cannot connect to [[192.168.202.131]:10050]: [113] No route to host [root@hf-01 ~]# 分析 服务端ping
运维小白
2022/01/06
1.7K0
Selenium+BeautifulSoup+json获取 Script 标签内的 json 数据
Selenium爬虫遇到 数据是以 JSON 字符串的形式包裹在 Script 标签中, 假设Script标签下代码如下:
诡途
2022/05/09
3.3K0
BeautifulSoup 获取 Script 标签内的 json 数据
有时候,我们可能会遇到数据是以 JSON 字符串的形式包裹在 Script 标签中,此时使用 BeautifulSoup 仍然可以很方便的提取。
happyJared
2019/11/03
4.7K0
JavaScript 递归遍历json串获取相关数据
url: "/home/level4Menu1",
授客
2019/11/18
3.4K0
JavaScript 递归遍历json串获取相关数据
python-获取URL中的json数据
数据源为某系统提供的URL,打开是json文件,python代码获取如下: URL替换成自己的即可。 import urllib.request def get_record(url): resp = urllib.request.urlopen(url) ele_json = json.loads(resp.read()) return ele_json if __name__ == '__main__': print(get_record('http://abc.co/
py3study
2020/01/16
5.5K0
Js解析Json数据获取元素JsonPath与深度
JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java,JsonPath 对于 JSON 来说,相当于 XPATH 对于 XML。
大道七哥
2020/03/28
13.6K0
Js解析Json数据获取元素JsonPath与深度
php的json_decode函数无法解析json
作者:matrix 被围观: 5,526 次 发布时间:2014-09-04 分类:零零星星 | 9 条评论 »
HHTjim 部落格
2022/09/26
2K0
[接口测试 - 基础篇] 04 无法绕过的json解析
概述 我们先看一下什么是json。 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 JSON 语法规则 在javascript语言中,一切都是对象。因此,任何
苦叶子
2018/04/09
3.1K0
解决mybatis 无法映射 数据库 json字段的问题
1.前言 MySQL从5.7版本之后开始支持JSON数据类型,相比于JSON格式的字符串类型有如下优势:存储在JSON列中的JSON文档的会被自动验证。无效的文档会产生错误;最佳存储格式。存储在JSON列中的JSON文档会被转换为允许快速读取文档元素的内部格式。 2.背景 mybatis目前还不支持映射json的数据格式,需要我们自己进行增强 3.实现 对mybatis TypeHandler进行增强 3.1ListStringTypeHandler 核心代码 package com.xxx.xxx.pip
特特
2022/05/22
4.5K2
php – 通过curl从url获取JSON数据「建议收藏」
我试图通过curl连接从URL获取JSON数据.当我打开链接时:它显示{“version”:“N / A”,“success”:true,“status”:true}. 现在,我希望获得以上内容.
全栈程序员站长
2022/07/11
4K0
python flask里 post请求,JSON数据获取方式总结
#!flask/bin/python #encodig=utf-8 # _*_ coding:utf-8 _*_ # Writer : byz # dateTime : 2016-08-05 from flask import Flask, jsonify, request, abort import json app = Flask(__name__) @app.route('/ana', methods=['GET', 'POST']) def call_analysis(): print
用户1214487
2018/04/16
8.6K0
map怎么转json对象_json怎么获取map
JSON 对象保存在大括号内。就像在JavaScript中, 对象可以保存多个 键/值 对。Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可以作为一个键或一个值。Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应。
全栈程序员站长
2022/09/23
3.5K0
java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
在开发的过程中,有时候我们需要设计一个数据接口。有时候呢,数据接口和Web服务器又不在一起,所以就有跨域访问的问题。 第一步:简单的设计一个数据接口。 数据接口,听起来高大上,其实呢就是一个简单的Serlvlet,在有get的请求的时候,返回我们要提供的数据就可以。现在JSON数据格式已经很普遍,因为很方便,所以我们做一个json数据的接口。直接看代码 先建立一个实体类,就是包装我们的数据的 bean/kapian.java package bean; public class kapian { /
ShenduCC
2018/04/27
3.7K0
java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
vmware workstation无法获取IP
有时在安装好虚拟机后,dhclient会发现无法获取IP地址 原因,有可能是连接网络模式的冲突——>个人推测 解决办法: 这时候只需删除桥接模式和仅主机模式,只留下NAT模式 这时候在
运维小白
2018/02/06
2.5K0
vmware workstation无法获取IP
虚拟机无法联网 无法自动获取IP
突然有一天开发无法连接上虚拟机了,打开虚拟机先是发现无法联网,后来ifconfig连IP都没有了,只有一个127.0.0.1
叶茂林
2023/09/02
3310
点击加载更多

相似问题

JSON无法获取数据

22

无法获取json数据

22

无法从json获取数据

10

无法获取json对象数据

20

我无法获取JSON数据

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文