NGINX: www가 아닌 ​​주소로 리디렉션

NGINX: www가 아닌 ​​주소로 리디렉션

NGINX로 웹사이트를 구성하려고 합니다. 저는 지식이 부족하여 제가 찾을 수 있는 모든 관련 솔루션을 시도했습니다. 양해해 주셔서 감사합니다. :)

모든 http 트래픽을 https로 리디렉션하고 내 웹 사이트의 www 하위 도메인과 내 서버 IP 주소(우리의 목적에 따라 123.123.123.123)에 대한 연결을 mywebsite.com으로 리디렉션해야 합니다. 내 서버 구성은 아래와 같으며 NGINX 404 페이지를 제공하는 www 리디렉션을 제외하고 이러한 기준을 모두 충족합니다. 내가 이해하지 못하는 것은 IP 주소와 www 하위 도메인의 처리가 나와 동일해 보인다는 것입니다. DNS 또는 SSL 인증서와 같은 다른 곳에 문제가 있습니까? 감사합니다.

/etc/nginx/sites-사용 가능/mywebsite

server {
        listen 80 ;
        server_name www.mywebsite.com mywebsite.com 123.123.123.123 ;
        return 301 https://mywebsite.com$request_uri ;
}
server {
        server_name www.mywebsite.com ;
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    return 301 https://mywebsite.com$request_uri ;


}
server {
        server_name 123.123.123.123;
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    return 301 https://mywebsite.com$request_uri ;


}
server {
        server_name mywebsite.com ;
        root /var/www/mywebsite ;
        index index.html index.htm index.nginx-debian.html ;
        location / {
                try_files $uri $uri/ =404 ;
        }
        if ($host != mywebsite.com) {
                return 301 https://mywebsite.com$request_uri;
        } 


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}
root@localhost:~# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: mail.mywebsite.com
    Serial Number: ###################################
    Key Type: ECDSA
    Domains: mail.mywebsite.com
    Expiry Date: 2023-12-09 16:27:55+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/mail.mywebsite.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/mail.mywebsite.com/privkey.pem
  Certificate Name: mywebsite.com
    Serial Number: ###################################
    Key Type: ECDSA
    Domains: mywebsite.com mail.mywebsite.com www.mywebsite.com
    Expiry Date: 2023-12-09 03:09:48+00:00 (VALID: 88 days)
    Certificate Path: /etc/letsencrypt/live/mywebsite.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/mywebsite.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

DNS의 경우 내 서버의 ipv4 및 ipv6 주소를 각각 가리키는 mywebsite.com 및 *.mywebsite.com에 대한 A 및 AAAA 레코드와 내 메일 하위 도메인에 대한 MX 레코드 및 일부 TXT 레코드가 있습니다.

A   mywebsite.com   123.123.123.123 600     
A   *.mywebsite.com 123.123.123.123 600     
AAAA    mywebsite.com   1234:1234::1234:1234:1234:1234  600     
AAAA    *.mywebsite.com 1234:1234::1234:1234:1234:1234  600     
MX  mywebsite.com   mail.mywebsite.com  600 10  
TXT _dmarc.mywebsite.com    v=DMARC1; p=reject; rua=mailto:[email protected]; fo=1    600     
TXT mywebsite.com   v=spf1 mx a:mail.mywebsite.com -all 600     
TXT mail._domainkey.mywebsite.com   v=DKIM1; h=sha256; k=rsa; p=#####################################   600 

답변1

(주로 주석이지만 공간이 제한되어 있습니다)

모든 http 트래픽을 https로 리디렉션하고 싶습니다.

알았어, 합리적인 것 같아.

내 웹사이트의 www 하위 도메인과 내 서버 IP 주소(우리의 목적에 따라 123.123.123.123)에 대한 연결은 mywebsite.com으로 리디렉션되어야 합니다.

왜? 나는 이것에 대한 이점을 보지 못하며 서비스의 고 가용성에 대한 문을 효과적으로 닫습니다.

예, 구성을 간단히 살펴보면 생각한 대로 작동해야 한다는 것을 알 수 있습니다. 그런데 왜 설명하기 위해 다른 서버 블록을 사용하고 있습니까?www.mywebsite.com그리고 123.123.123.123이 동일한 동작을 구현할 때? (실제로 단일 서버 블록에서 3개의 SSL 가상 호스트에 대한 동작을 구현할 수 있습니다.) 마찬가지로 mail.mywebsite.com에 대해서는 별도의 인증서가 필요하지 않습니다.

인증서 문제로 인해 404 오류가 발생할 가능성은 거의 없습니다.

DNS는 확인해야 할 명백한 것으로 보입니다. 반대로 기존 DNS를 명시적으로 재정의하고 예를 들어 다음을 사용하여 실제 HTTP 헤더를 볼 수 있습니다.

curl -I -k --resolve \*:443:123.123.123 https://www.example.com

관련 정보