创建一个只能访问特定页面的子域别名

Create a subdomain alias that only has access to certain pages

背景

我们是 运行 一个为想要 "white-label" 解决方案的人设计的项目(他们希望他们的网站有一个子域来显示我们网站的某些页面,样式看起来像他们的) .我们倾向于这条路线的主要原因是他们的用户觉得他们没有离开原来的网站(或者他们是相关的)并且客户坚持。

计划

在我们的服务器上指向一个子域,但只允许它访问与该项目相关的页面(否则我们的常规站点页面会使人感到困惑)。我们的前端堆栈只是一个小型 Nginx 服务器,里面有一个单页应用程序。我们没有从站点的这个区域到其他区域的任何导航,但如果路径不被阻塞,人们仍然可以到达那里。我们希望访问的页面是:

// 其中 example.example.com 只是 other.com

的别名

问题

  1. 判断请求者使用的是子域还是我们的主域,最可靠的方法是什么?
  2. 然后我们可以为 /profiles/* 页面之外的请求提供 404 吗?
  3. 使用服务器配置 (Nginx) 还是路由拦截器 (AngularJS) 更好?

假设您的客户端有 example.com 域而您有 example.org 域,在您的客户端服务器上添加此配置应该可以解决问题

server {
    listen 80;
    server_name sub.example.com;

    location /profiles/ {
        # proxy pass all requests to example.org/relevant/profiles/folder
        proxy_pass http://example.org/relevant/profiles/folder/;
        proxy_redirect default;
    }
    location / {
        # Return 404 for all other requests to sub.example.com
        return 404;
    }
}