Nginx 모든 하위 도메인을 하위 도메인이 아닌 URL로 리디렉션

Nginx 모든 하위 도메인을 하위 도메인이 아닌 URL로 리디렉션

현재 다음 문제가 발생하고 있는데 도저히 해결할 수 없습니다. Google에서 찾은 20개 이상의 유사한 스레드는 도움이 되지 않습니다.

우선, 다음과 같은 간단한 HTTP-HTTPS 리디렉션을 만들었습니다.

server {
    listen 80;
    server_name my-domain.com;
    return 301 https://my-domain.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name my-domain.com;
    ...
}

그리고 이것은 완벽하게 작동합니다. 내가 열려고 하면내 도메인.com, 다음으로 리디렉션됩니다https://my-domain.com. 그러나 하위 도메인에는 여전히 문제가 있습니다. 내가 열면www.my-domain.com또는test.my-domain.com, 이 하위 도메인을 내 루트로 리디렉션하고 싶습니다.HTTPS도메인: https://my-domain.com. 앞에 하위 도메인이 없습니다. HTTPS 하위 도메인에도 동일한 내용이 나타나야 합니다. 말 그대로 모든 하위 도메인을 금지하고 싶습니다(지금은).

추가하는 등 많은 구성을 시도했습니다.*.my-domain.comserver_name에 추가했지만 여전히 예상대로 작동하지 않습니다. 또한 *.my-domain.com에서 일반 HTTPS 도메인으로의 HTTPS 리디렉션을 만들려고 시도했지만 여전히 각 구성에서 비슷한 결과가 나타납니다.

  1. 모든 HTTP 요청은 하위 도메인을 포함하는 HTTPS URL로 이어집니다.
  2. 모든 HTTPS 요청은 하위 도메인 없이 HTTPS URL을 생성하지 않습니다.

이제 내 질문: 모든 하위 도메인(http 및 https)을 하위 도메인이 포함되지 않은 특정 https URL로 리디렉션하려면 어떻게 해야 합니까? 모든 조합은 항상 다음과 같은 결과를 가져옵니다.https:// my-domain.com$request_uri

미리 감사드립니다

업데이트:

문제가 완전히 해결되지는 않았지만 그래도 견딜 수 있는 것이 있습니다. 내 도메인 구성에서 www.my-domain.com에서 my-domain.com으로 CNAME을 만들었습니다. 또한 nginx를 수정하고 443 www.my-domain에서 https:// my-domain으로 리디렉션되는 새 서버 구성을 추가했습니다. 또한 www.my-domain에서 https:// my-domain으로 리디렉션되는 일반 포트 80 서버도 있습니다. 인증서를 수정하고 도메인 및 하위 도메인 목록에 www.my-domain을 추가했습니다. 이제 www.my-domain(http 또는 https)에 대한 모든 요청은 다음으로 리디렉션됩니다.https://내 도메인. 또한 내 도메인(www가 없는 http)은 다음으로 리디렉션됩니다.https://내 도메인도. 이것은 내 요구에 "괜찮은" 것 같습니다.

답변1

블록 을 사용하여 다른 블록에 명시적으로 정의되지 않은 도메인을 일치 default_server시킬 수 있습니다 . 이 부분은 와일드카드 인증서에서만 제대로 작동합니다.httphttpsserverhttps

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    ... ssl configuration
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    ...
}

보다이 문서자세한 내용은.

관련 정보