เปลี่ยนเส้นทางคำขอทั้งหมดไปยัง HTTPS ยกเว้นไดเรกทอรีย่อยเดียว


13

ฉันกำลังพยายามย้ายจากใบรับรองที่ลงชื่อด้วยตนเองไปเป็น Let's เข้ารหัสใบรับรองบนเว็บเซิร์ฟเวอร์ nginx ของฉัน

ขณะนี้ฉันเปลี่ยนเส้นทางคำขอทั้งหมดไปhttp/80ยังhttps/443ซึ่งใช้ใบรับรองที่ลงชื่อด้วยตนเองที่ฉันสร้างขึ้นเมื่อไม่นานมานี้

ตอนนี้ - จากสิ่งที่ฉันเข้าใจ Let's Encrypt ส่งคำขอไปที่พอร์ต 80 (เนื่องจากฉันใช้webrootตัวเลือกcertbot) คำขอเหล่านี้จะถูกเปลี่ยนเส้นทางซึ่งทำให้การสร้างใบรับรองไม่สำเร็จ

ฉันพยายามทำสิ่งนี้ด้วยบล็อกเซิร์ฟเวอร์ต่อไปนี้ฟังที่พอร์ต 80:

server {
        listen  80;     
        server_name     sub.domain.tld;
        server_tokens   off;


        location /.well-known {
                root /var/www/letsencrypt;
        }

        location / {
                return 301 https://$host$request_uri;
        }
}

แต่คำขอจะ/.well-knownถูกเปลี่ยนเส้นทางไปยังhttps/443ใด ๆ

ฉันจะเปลี่ยนเส้นทางคำขอทั้งหมดจากhttp/80ไปยังhttps/443ยกเว้นคำขอไปยังได้/.well-known/อย่างไร


1
เท่าที่ผมทราบที่webrootของcertbotตัวเลือกที่ต้องใช้ http ธรรมดา
SaAtomic

2
คุณตรวจสอบการเปลี่ยนเส้นทางอย่างไร ฉันเดาว่าเบราว์เซอร์ของคุณให้ความสำคัญกับส่วนหัว HSTS สำหรับโดเมนของคุณ แต่ลองเข้ารหัสบอทจะไม่สนใจมัน ตรวจสอบกับwget/curl
Alexey Ten

คำตอบ:


17

ลองสิ่งนี้:

server {
    listen  80;     
    server_name     sub.domain.tld;
    server_tokens   off;

    root /var/www/letsencrypt;

    location /.well-known {
        try_files $uri $uri/ =404;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

เนื่องจากไม่มีรายการในเซิร์ฟเวอร์เสมือนของคุณก็ไม่ทราบว่าจะทำอย่างไรกับการร้องขอมาtry_files/.well-known


2
locationโดยไม่ต้องtry_filesส่งไฟล์จากrootไดเรกทอรี
Alexey สิบ

1
แปลกฉันมีสถานการณ์เดียวกันแน่นอนและฉันไม่ได้ใช้try_filesและทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน ในความเป็นจริงฉันมีการกำหนดค่าที่แน่นอนเช่นเดียวกับที่ระบุไว้ในคำถาม เพียง แต่แตกต่างคือlocation /.well-known/แทนที่จะlocation /.well-known(หมายเหตุเฉือนท้าย) ดังนั้นบางทีปัญหาอยู่ที่ไหน
Olle Kelderman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.