nignx は URL への直接アクセスをブロックし、特定のサブドメインからのアクセスのみを許可します。

nignx は URL への直接アクセスをブロックし、特定のサブドメインからのアクセスのみを許可します。

次のような状況です:

  1. 次の Web アプリケーションを通じて安全なアクセス (ユーザー名/パスワード) で実行されるサービス:

出典:

このアプリケーション (embed/iframe など) 内で、サブドメインからデータを埋め込むいくつかのサービスを構成します。

  1. 埋め込むべきサブドメインサービス:

出典:

これらのアプリは、「data.myapp.com/sevice1」、「data.myapp.com/sevice2」など、「data.myapp.com」に多くのサービスを埋め込みます。

しかし、問題は次のとおりです。

「data.myapp.com」サブドメインへの直接アクセスは望んでいません...ソースがURLからのものである場合にのみすべてのトラフィックを許可したいです出典:

私の 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/ {...}
}

しかし、IP アドレスでしか使用できないようでallow、その場合、サーバーは同じ IP アドレスを持ちます。

現在の server_name への直接アクセスをブロックし、別のドメインからのみ許可する方法はありますか?

ご協力いただきありがとうございます!


アップデート

リファラー ヘッダーを使用して data.myapp.com URL への直接アクセスをブロックすることに部分的に成功しましたが、リファラー ヘッダーを操作できるようになると、これはまったく安全ではありません...

次のコードに従ってください:

server {

    [...]

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

    [...]
}

関連情報