nignx 阻止直接访问 url 并仅允许从特定子域访问

nignx 阻止直接访问 url 并仅允许从特定子域访问

我有以下情况:

  1. 通过 Web 应用程序以安全访问(用户/密码)运行的服务位于:

https://myapp.com

在这个应用程序(嵌入/iframe/等)中,我配置了一些嵌入来自子域的数据的服务。

  1. 应嵌入的子域服务:

https://data.myapp.com

这些应用程序在“data.myapp.com”中嵌入了许多服务,例如“data.myapp.com/sevice1”、“data.myapp.com/sevice2”等......

但问题是:

我不希望直接访问“data.myapp.com”子域...我只想允许来自该网址的所有流量https://myapp.com

以下是我的 nginx conf 文件的样子:

server {

    server_name myapp.com;

    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    root /var/www/html;
}

server {
    server_name data.myapp.com;

    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    allow myapp.com;
    deny all;

    location /service1/ {...}
    location /service2/ {...}
    location /service3/ {...}
}

但似乎我只能使用allowIP 地址,在这种情况下服务器具有相同的 IP 地址。

有没有办法阻止对当前 server_name 的直接访问并仅允许从另一个域访问?

谢谢你的帮助!


更新

我已经部分完成了使用 referer 标头阻止对我的 data.myapp.com url 的直接访问...但是,一旦我们可以操纵 referer 标头,这根本就不安全...

按照代码:

server {

    [...]

    if ( $http_referer !~* 'myapp.com' ) {
        return 404;
    }

    [...]
}

相关内容