อัปเดต
ลักษณะการทำงานที่สามารถโหลดได้ทีละไซต์เท่านั้นดูเหมือนจะเกี่ยวข้องกับเบราว์เซอร์ฝั่งไคลเอ็นต์ - หากฉันเปิดไซต์ทั้ง 3 แห่งในหน้าต่างเบราว์เซอร์เดียว (แท็บละหนึ่งแท็บ) เราจะได้พฤติกรรมที่อธิบายไว้ด้านล่าง ถ้าฉันใช้เบราว์เซอร์ 3 ตัวแยกกัน (ฉันใช้ Edge, Opera และ Chrome) ไซต์ทั้ง 3 จะโหลดตามที่คาดไว้
/อัปเดต
ฉันมีการตั้งค่าพร็อกซีย้อนกลับของ Nginx เพื่อส่งผ่านทราฟฟิกภายนอกไปยังหนึ่งใน 3 เซิร์ฟเวอร์ภายใน (เซิร์ฟเวอร์ Windows 2019 ที่ใช้ IIS 10) ตาม URL (สำหรับสภาพแวดล้อมการทดสอบ) เซิร์ฟเวอร์ nginx และเว็บเซิร์ฟเวอร์ทั้งหมดอยู่ใน vlan เดียวกัน
สิ่งนี้ทำงานได้ตามที่ตั้งใจไว้จนถึงเช้าเมื่อหลังจากรีบูตเว็บเซิร์ฟเวอร์ nginx สามารถโหลดหนึ่งใน 3 ไซต์ต่อครั้งเท่านั้น
ถ้าลองเปิดทั้ง 3 เว็บ เว็บแรกก็โหลดได้ปกติ อีก 2 เว็บก็ error 404 ทันที ถ้าฉันรอสักครู่แล้วรีเฟรช 404 อันใดอันหนึ่ง มันจะโหลด แต่ไซต์แรกที่ใช้ได้ตอนนี้จะไปที่ 404 เหมือนกันหากโหลดไซต์ที่สาม
ไม่มีการเปลี่ยนแปลงการกำหนดค่า Nginx และกำลังโหลดไซต์ทั้ง 3 ไซต์พร้อมกันก่อนที่จะรีบูตเมื่อเช้านี้
ฉันได้ทดสอบ nginx conf ด้วย nginx -t ซึ่งกลับมาใช้ได้
ฉันได้โหลด nginx conf ใหม่ด้วย sudo systemctl โหลด nginx ใหม่ - ไม่มีการเปลี่ยนแปลงพฤติกรรม
ฉันรีสตาร์ทเซิร์ฟเวอร์ nginx แล้ว - ไม่มีการเปลี่ยนแปลงพฤติกรรม
เรียกดูเว็บเซิร์ฟเวอร์ได้โดยตรงทั้ง 3 เว็บไซต์ใช้งานได้ตามปกติ
ฉันสามารถ telnet บนพอร์ต 443 จาก nginx ไปยังเว็บเซิร์ฟเวอร์ทั้ง 3 แห่งและในทางกลับกัน
ข้อเสนอแนะใด ๆ ว่าทำไมพฤติกรรมอาจเปลี่ยนไป?
การกำหนดค่า nginx มีดังต่อไปนี้ (ฉันได้แทนที่ URL จริงแล้ว แต่ conf ไม่เปลี่ยนแปลง):
ผู้ใช้ www-data;
worker_processes อัตโนมัติ
pid /run/nginx.pid;
รวม /etc/nginx/modules-enabled/*.conf;
เหตุการณ์ {
worker_connections 1024;
# multi_accept บน;
}
#เพิ่มโดย Ian เพื่อให้สามารถสตรีมได้
ลำธาร {
# หากต้องการเพิ่มเว็บไซต์และเซิร์ฟเวอร์เพิ่มเติม:
# เพิ่มชื่อโฮสต์และป้ายกำกับแบ็กเอนด์ลงในแผนที่ จากนั้นเพิ่มบล็อกอัพสตรีม ดังตัวอย่างด้านล่าง
# ***เมื่อคุณอัปเดตการกำหนดค่าแล้ว คุณต้องโหลด nginx ใหม่ด้วยคำสั่งต่อไปนี้: sudo systemctl โหลด nginx ใหม่
แผนที่ $ssl_preread_server_name $name {
url.1.com กันเซิร์ฟเวอร์;
url.2.com CatServer;
url.3.com บลูเซิร์ฟเวอร์;
# <ชื่อโฮสต์ของเว็บไซต์อยู่ที่นี่> <ป้ายกำกับข้อความสำหรับเซิร์ฟเวอร์ส่วนหลังอยู่ที่นี่>;
# ตัวอย่าง: mywebsite.com myserver;
}
# จากนั้นสร้างบล็อกอัพสตรีมใหม่โดยใช้ชุดป้ายกำกับด้านบนดังที่แสดงด้านล่าง
# อัพสตรีม myserver {
# เซิร์ฟเวอร์ <IP:พอร์ต>;
#}
ต้นน้ำ GunServer {
เซิร์ฟเวอร์ 10.25.2.12:443;
}
CatServer ต้นน้ำ {
เซิร์ฟเวอร์ 10.25.2.13:443;
}
ต้นน้ำ BlueServer {
เซิร์ฟเวอร์ 10.25.2.11:443;
}
เซิร์ฟเวอร์ {
ฟัง 443;
proxy_pass $ชื่อ;
ssl_preread บน;
}
}
# การตั้งค่าทั้งหมดด้านล่างบรรทัดนี้มาจากตัวอย่าง nginx conf