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 的直接存取並僅允許來自另一個網域的直接存取?

謝謝你的幫忙!


更新

我已經部分完成了使用引用標頭阻止對我的 data.myapp.com url 的直接訪問...但這根本不安全,一旦我們可以操縱引用標頭...

按照代碼:

server {

    [...]

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

    [...]
}

相關內容