ฉันมีไฟล์เซิร์ฟเวอร์ nginx ที่ให้บริการเนื้อหาแบบสแตติก ดูเรียบง่าย เช่น:
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ssl_certificate /etc/letsencrypt/live/this_host/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/this_host/privkey.pem;
server_name static_content;
# ไม่มีการหมุนเวียนคีย์การเข้ารหัสตั๋วเซสชันอย่างเหมาะสม
# ปิดการใช้งานตั๋วเซสชันทั้งหมด
ปิด ssl_session_tickets;
# เนื่องจากอุปกรณ์ไคลเอนต์ที่คาดหวังนั้นค่อนข้างทันสมัย จึงไม่มีความจำเป็น
# รองรับโปรโตคอลที่ไม่ปลอดภัย
ssl_protocols TLSv1.3;
ปิด ssl_prefer_server_ciphers;
ตำแหน่ง /ไบนารี/ {
auth_basic "การป้องกันขั้นต่ำ";
auth_basic_user_file /etc/nginx/auth/.htpasswd;
ราก /var/www/static/;
}
สถานที่ = /apple-app-site-association {
นามแฝง /var/www/static/apple-app-site-association/apple-app-site-association;
ประเภท { } default_type "content-type: application/json";
}
}
ฉันใช้สิ่งนี้ซ้ำบนเซิร์ฟเวอร์ที่ใช้งานจริงและเซิร์ฟเวอร์ชั่วคราว บนเซิร์ฟเวอร์ staging ฉันต้องการแสดง API ข้างหน้าด้วย ถ้าฉันเพิ่งเพิ่มสถานที่อื่นใน:
ตำแหน่ง ^~ /my_cool_api/v1/ {
proxy_pass http://localhost:4000/my_cool_api/v1/;
}
แต่ฉันมีไฟล์เซิร์ฟเวอร์ที่แตกต่างกันสำหรับการเสิร์ฟที่แตกต่างกัน และมันก็มีชื่อไม่ดีว่า "static_content" ณ จุดนั้นเช่นกัน ฉันต้องการทำให้เป็นแบบแยกส่วนมากขึ้น ดังนั้นฉันจึงลองปล่อยไฟล์แรกไว้ตามลำพัง และเพิ่มไฟล์ที่สองไปยังเซิร์ฟเวอร์ชั่วคราว:
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ssl_certificate /etc/letsencrypt/live/this_host/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/this_host/privkey.pem;
ชื่อเซิร์ฟเวอร์ my_cool_api;
# ไม่มีการหมุนเวียนคีย์การเข้ารหัสตั๋วเซสชันอย่างเหมาะสม
# ปิดการใช้งานตั๋วเซสชันทั้งหมด
ปิด ssl_session_tickets;
# เนื่องจากอุปกรณ์ไคลเอนต์ที่คาดหวังนั้นค่อนข้างทันสมัย จึงไม่มีความจำเป็น
# รองรับโปรโตคอลที่ไม่ปลอดภัย
ssl_protocols TLSv1.3;
ปิด ssl_prefer_server_ciphers;
ที่ตั้ง ^~ /accumulus_twig/v1/ {
proxy_pass http://localhost:4000/accumulus_twig/v1/;
}
}
สิ่งนี้ไม่ได้ผล หลังจากที่ฉันเชื่อมโยงทั้งสองในไซต์ที่เปิดใช้งาน ฉันเพิ่งให้ API ทำงานในกรณีนั้น error.log แสดงว่าไม่พบไฟล์ (คงที่) ที่ /usr/share/nginx/html/binaries/
. ไม่มีวิธีแบบแยกส่วนที่จะมีข้อกำหนดเซิร์ฟเวอร์เดียวที่ 443 พร้อมใบรับรองที่เหมาะสมทั้งหมด ฯลฯ แต่กำหนดตำแหน่ง / การจับคู่ที่แตกต่างกันในไฟล์ต่างๆ