แม้จะมีตัวอย่างมากมายทางออนไลน์ ฉันได้ลองหลายอย่าง โดยเฉพาะการใช้คำสั่ง if แต่จนถึงตอนนี้ฉันยังไม่สามารถตั้งค่า vhost ของฉันได้อย่างถูกต้อง
vhost ของฉันคือ
a1.example.com
www.a1.example.com ควรเปลี่ยนเส้นทางไปที่ https://a1.example.com
a1.example.com ควรเปลี่ยนเส้นทางไปที่ https://a1.example.com
เป้าหมายคือเปลี่ยนเส้นทางไปที่ https ที่ไม่ใช่ www ทุกครั้ง
นี่คือ vhost ของฉัน ฉันใช้ certbot
เซิร์ฟเวอร์ {
server_name a1.example.com www.a1.example.com;
รูท /var/www/example/build;
ดัชนี index.html index.htm;
ที่ตั้ง / {
try_files $uri $uri/ =404;
}
ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย Certbot
ฟัง 443 ssl; # จัดการโดย Certbot
ssl_certificate /etc/letsencrypt/live/a1.example.com/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/a1.example.com/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}
เซิร์ฟเวอร์ {
ถ้า ($host = a1.example.com) {
ส่งคืน 301 https://$host$request_uri;
}
ฟัง 80;
ฟัง [::]:80;
server_name a1.example.com www.a1.example.com;
กลับ 404; # จัดการโดย Certbot
}
สิ่งนี้จะเปลี่ยนเส้นทางจาก http เป็น https แต่ฉันไม่สามารถเปลี่ยนเส้นทาง www เป็น nonwww ได้
บันทึก DNS ปัจจุบันของฉันคือ
เอ@ไอพี
A1 IP
CNAME โดเมน www
CNAME www.a1 www.a1.domain