การตั้งค่าการเปลี่ยนเส้นทาง www â ไม่ใช่ www และ เอชทีทีพี â HTTPS ในเวลาเดียวกัน ฉันพบปัญหาซ้ำซ้อนที่ฉันไม่สามารถเอาชนะได้
บนโดเมนของฉันปล่อยให้มันเป็นไป ตัวอย่าง.คอม
âฉันมีเว็บไซต์ที่มีชื่อหลัก another.example.com
. ฉันต้องการคำขอเพื่อ ตัวอย่าง.คอม
, www.example.com
, และ www.another.example.com
ที่จะเปลี่ยนเส้นทางไปที่ another.example.com
และคำขอ HTTP ทั้งหมดจะเปลี่ยนเส้นทางไปยัง HTTPS พร้อมกัน ฉันต้องการรองรับ HTTP/2 และ IPv6 ด้วย
ฉันไม่มีปัญหาในการทำให้สิ่งนี้ใช้งานได้ แต่ฉันไม่สามารถกำจัดส่วนที่ซ้ำกันของไฟล์การกำหนดค่า (เช่นการตั้งค่าใบรับรอง HTTPS) ความพยายามทั้งหมดเพื่อลดความซ้ำซ้อนทำให้การเปลี่ยนเส้นทางอย่างน้อยหนึ่งรายการหรือทั้งหมดหยุดทำงาน (บางครั้งพร้อมกับ HTTP/2)
โปรดดูการกำหนดค่าและแนะนำวิธีทำความสะอาด:
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง [::]:80;
ชื่อเซิร์ฟเวอร์ www.another.example.com www.example.com another.example.com example.com;
ส่งคืน 301 https://another.example.com$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443;
ฟัง [::]:443;
ชื่อเซิร์ฟเวอร์ www.another.example.com www.example.com example.com;
ส่งคืน 301 https://another.example.com$request_uri;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
รวม /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
เซิร์ฟเวอร์ {
server_name another.example.com;
รูท /usr/share/nginx/another.example.com;
ดัชนี index.html;
ที่ตั้ง / {
try_files $uri $uri/ =404;
}
ฟัง [::]:443 ssl http2;
ฟัง 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
รวม /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}