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