Score:0

Nginx ไม่สามารถเปลี่ยนเส้นทางโดเมน www ไปยังโดเมน https ไม่ใช่ www เมื่อใช้ certbot

ธง us

แม้จะมีตัวอย่างมากมายทางออนไลน์ ฉันได้ลองหลายอย่าง โดยเฉพาะการใช้คำสั่ง 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
Ivan Shatsky avatar
gr flag
โปรดสังเกตว่าฉันพลาดการลงชื่อเข้าใช้คำถามใน regex (`^(?:www\.)a1\.example\.com$` แทน `^(?:www\.)?a1\.example\.com$` ). ฉันได้แก้ไขคำตอบแล้ว
Score:1
ธง gr

ฉันคิดว่าคำตอบที่ดีที่สุดสำหรับเรื่องนี้ได้รับจาก @MichaelHampton ที่นี่. คุณสามารถเพิ่มการแก้ไขด่วนได้

ถ้า ($host = www.a1.example.com) {
    ส่งคืน 301 https://a1.example.com$request_uri;
}

ไปยังเซิร์ฟเวอร์ HTTPS ของคุณ บล็อกและเปลี่ยนแปลง ถ้า ($host = a1.example.com) { ... } ในเซิร์ฟเวอร์ HTTP บล็อกไปที่

ถ้า ($host ~ ^(?:www\.)?a1\.example\.com$) {
    ส่งคืน 301 https://a1.example.com$request_uri;
}

อย่างไรก็ตาม ฉันเห็นด้วยอย่างยิ่งกับ Michael Hampton ที่คุณไม่ควรอนุญาตให้ certbot แก้ไขการกำหนดค่า nginx ของคุณและใช้เพื่อรับ/ต่ออายุใบรับรองเท่านั้น (ดูคำตอบของเขาสำหรับตัวอย่างการกำหนดค่า nginx ที่เขียนอย่างดี)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา