หากฉันมี virtualhosts อยู่แล้วฉันจะสร้างโฮสต์เสมือนเพื่อจัดการคำขอที่ไม่ตรงกับ virtualhosts ใด ๆ ได้อย่างไร (เช่นการเข้าถึงโดย IP โดเมนอื่นที่เชื่อมโยงกับ IP, .etc .etc)
หากฉันมี virtualhosts อยู่แล้วฉันจะสร้างโฮสต์เสมือนเพื่อจัดการคำขอที่ไม่ตรงกับ virtualhosts ใด ๆ ได้อย่างไร (เช่นการเข้าถึงโดย IP โดเมนอื่นที่เชื่อมโยงกับ IP, .etc .etc)
คำตอบ:
ชื่อเซิร์ฟเวอร์ _; และ default_server บนการกำหนดค่าการฟังคือสิ่งที่คุณกำลังมองหา
ตัวอย่าง:
server {
listen 80 default_server;
server_name _;
root /var/www/default; (or wherever)
}
owncloud 9
จะไม่ตอบกลับ ทำไม? Owncloud VHOST มี server_name และไม่ใช่ default_server
80
แค่ 443 เท่านั้นที่เปิดอยู่
/var/www/default
ในกรณีนี้ ฉันจะต้องสั่งซื้อตัวอย่างได้อย่างไร
หากคุณใช้ SSL คุณต้องมีการวางท่อเพิ่มเติมสำหรับ default_server - ใบรับรองและคีย์ (ซึ่งสามารถลงชื่อด้วยตนเองได้)
server {
server_name _;
listen 80 default_server;
listen 443 ssl default_server;
ssl_certificate <path to cert>;
ssl_certificate_key <path to key>;
return 404; # or whatever
}
Nginx จะพยายามยอมรับการเชื่อมต่อ SSL บน default_server ที่ตรงกับ IP / พอร์ต หากเซิร์ฟเวอร์ดังกล่าวไม่มีใบรับรอง / คีย์ nginx จะทำการยกเลิกการเชื่อมต่อ จะไม่ลองใช้เซิร์ฟเวอร์อื่น ดังนั้นอย่าลืมใบรับรอง / คีย์
nginx -t
พูดว่า "ok")
server {
listen 80 default_server;
listen 443 ssl default_server;
listen [::]:80 default_server;
listen [::]:443 ssl default_server;
server_name _;
root /path/to/default;
}
รายการมีไว้สำหรับพอร์ต 80 (HTTP), พอร์ต 443 (HTTPS), พอร์ต 80 IPv6 และพอร์ต 443 IPv6 ตามลำดับ
คุณสามารถพิจารณาเพิ่มlog_not_found off;
เพื่อหลีกเลี่ยงการเพิ่มรายการบันทึกสำหรับไม่พบหน้า
listen 443 ssl default_server;