nignx는 URL에 대한 직접 액세스를 차단하고 특정 하위 도메인에서만 액세스를 허용합니다.

nignx는 URL에 대한 직접 액세스를 차단하고 특정 하위 도메인에서만 액세스를 허용합니다.

나는 다음과 같은 상황에 처해 있습니다.

  1. 다음 웹 애플리케이션을 통해 보안 액세스(사용자/패스)로 실행되는 서비스:

https://myapp.com

이 애플리케이션(embed/iframe/etc) 내에서 하위 도메인의 데이터를 포함하는 일부 서비스를 구성합니다.

  1. 포함되어야 하는 하위 도메인 서비스:

https://data.myapp.com

이 앱에는 "data.myapp.com/sevice1", "data.myapp.com/sevice2" 등과 같은 "data.myapp.com"에 많은 서비스가 포함되어 있습니다.

그러나 문제는 다음과 같습니다.

"data.myapp.com" 하위 도메인에 대한 직접 액세스를 원하지 않습니다... 소스가 URL에서 오는 경우에만 모든 트래픽을 허용하고 싶습니다.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/ {...}
}

그런데 IP 주소로만 사용할 수 있는 것 같고 allow, 이 경우 서버의 IP 주소가 동일합니다.

현재 server_name에 대한 직접 액세스를 차단하고 다른 도메인에서만 허용하는 방법이 있습니까?

어떤 도움을 주셔서 감사합니다!


업데이트

리퍼러 헤더를 사용하여 data.myapp.com URL에 대한 직접 액세스를 부분적으로 차단했지만 리퍼러 헤더를 조작할 수 있게 되면 이는 전혀 안전하지 않습니다.

코드를 따르십시오:

server {

    [...]

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

    [...]
}

관련 정보