นี่จะต้องเป็นสำเนา แต่ฉันค้นหามานานแล้วและไม่พบอะไรเลย

เมื่อฉันพิมพ์ที่อยู่ของเว็บไซต์โดยใช้httpฉันได้รับหน้าเริ่มต้นของ NginX (https ใช้งานได้ดี):

http://svija.love

ไฟล์กำหนดค่า NginX ประกอบด้วย:

server {
    if ($host = svija.love) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name svija.love;
    listen 80;
    return 404; # managed by Certbot
}

นี้ถูก เพิ่มโดย อัตโนมัติโดย Certbot

ฉันคาดหวังว่าคำสั่งif ($host = svija.love)จะตรวจจับคำขอ http และเปลี่ยนเส้นทางไปที่ HTTPS

แต่มันไม่ทำงานแบบนั้น

ไม่ใช่ผู้เชี่ยวชาญ สำหรับฉันแล้วดูเหมือนว่าบิตที่สองที่ขึ้นต้นด้วยserver_name svija.loveขัดแย้งโดยตรงกับส่วนแรก:

  • บล็อกแรกเปลี่ยนเส้นทางหากโฮสต์คือ svija.love
  • บล็อกที่สองส่งคืน 404 หากโฮสต์คือ svija.love

ชื่อเซิร์ฟเวอร์ที่กำหนดค่าจริงคือlive.svija.loveหากนั่นสร้างความแตกต่าง

การชี้แจงใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

[อัปเดต]ฉันลบไฟล์กำหนดค่าเริ่มต้นของ NginX และตอนนี้ HTTP เปลี่ยนเส้นทางไปยัง HTTPS ตามที่คาดไว้

ยังคง ถ้าใครสามารถอธิบายทั้งสองบล็อกการกำหนดค่าข้างต้น ฉันชอบที่จะเข้าใจสิ่งที่พวกเขาทำมากขึ้น

answer

ฉันลบการกำหนดค่าเริ่มต้น NginX ออกจาก

/etc/nginx/sites-enabled

และตอนนี้การเปลี่ยนเส้นทางทำงานได้ตามที่ควรจะเป็น