nginx catch-all 모든 것을 잡기

nginx catch-all 모든 것을 잡기

안녕하세요. 저는 이 기본 파일을 얻었습니다.

server {
    listen 80 default_server;
    listen 443 default_server;
    listen [::]:80 default_server;
    listen [::]:443 default_server;
    server_name _;
    return 444;
}

이것은 모든 것을 포착합니다... 동일한 폴더(사이트 사용 가능)에 내 domain.com 파일이 있습니다.

server {
    listen 80;
    server_name my.domain.com;
    location /.well-known/acme-challenge {
        default_type "text/plain";
        root /storage/webserver/certbot;
    }
    #Forces all other requests to HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}
server {
    listen 443 ssl http2;
    server_name my.domain.com;
    ## SSL STUFF ##
    root /path/to/root;
    index index.html index.php;

    location / {
        try_files $uri $uri/ $uri.html;
    }


    ### Site config
}

기본값을 비활성화(제거)한 상태로 두고 my.domain.com으로 이동하면 내 페이지가 표시됩니다. 이제 기본 파일을 추가하면 Nginx(Closed)에서 444가 표시됩니다. 왜..?

편집: 몇 가지 테스트를 거친 후 문제가 Listen 443 default_server인 것으로 나타났습니다. 모든 https 요청을 잡는 부분이 있는데, 왜?? 내 도메인이 차단되어 있고 443을 듣습니다!

답변1

이 답변에 따르면https://serverfault.com/a/841646/459947

catch_all에 인증서를 추가해야 했습니다. 자체 서명된 인증서를 사용하여 해당 작업을 수행한 후 내 IP에 444(블록이 없으므로 정확함)와 SSL 경고가 표시되고 HTTPS에서 내 IP를 수락하면 444가 표시됩니다. 그래서 이것은 나에게 효과적입니다. 더 좋은 방법이 있었으면 좋겠습니다.

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    server_name _;
    ssl_certificate <path to cert>
    ssl_certificate_key <path to key>
    return 444;
}

에 따르면https://serverfault.com/a/593668/459947당신은 할 수만약에블록에서 도메인이 올바른지 확인하세요. 내 말은 그것이 작동한다고 생각하지만 그것을 각 블록에 추가하고 싶지는 않습니다. 이것이 더 나은 생각이라고 생각합니다. 알려주세요.

관련 정보