【问题标题】:Create a subdomain alias that only has access to certain pages创建一个只能访问某些页面的子域别名
【发布时间】:2015-01-30 20:04:25
【问题描述】:

背景

我们正在为需要“白标”解决方案的人运行一个项目(他们希望在其网站的子域中显示我们网站的某些页面,其样式看起来像他们的)。我们倾向于这条路线的主要原因是他们的用户觉得他们没有离开原始网站(或者他们是相关的)并且客户坚持。

计划

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

  • example.example.com/profiles/*
    • 个人资料是正在开发的网站的新区域

// 其中 example.example.com 只是 other.com 的别名

问题

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

【问题讨论】:

    标签: angularjs nginx routing subdomain


    【解决方案1】:

    假设您的客户端拥有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;
        }
    }
    

    【讨论】:

    • 只是为了澄清您的解决方案和我最初的猜测之间的差异,在将请求传递给我们的服务器之前,应该在客户端的子域上处理 404 情况。谢谢。
    • 是的,就是这样。无需弄清楚您的域上的请求是您的还是客户的。
    猜你喜欢
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2016-02-18
    • 1970-01-01
    • 2013-10-14
    • 2014-04-19
    • 2023-03-13
    相关资源
    最近更新 更多