Score:0

Nginx Reverse proxy สามารถค้นหาไซต์ได้เพียงแห่งเดียวจาก 3 แห่ง

ธง lr

อัปเดต ลักษณะการทำงานที่สามารถโหลดได้ทีละไซต์เท่านั้นดูเหมือนจะเกี่ยวข้องกับเบราว์เซอร์ฝั่งไคลเอ็นต์ - หากฉันเปิดไซต์ทั้ง 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
in flag
หากคุณได้รับข้อผิดพลาด 404 nginx สามารถเข้าถึงเซิร์ฟเวอร์ส่วนหลังได้ ตรวจสอบเซิร์ฟเวอร์ส่วนหลังแทน nginx เริ่มต้นด้วยบันทึกของเซิร์ฟเวอร์
Ian Straton avatar
lr flag
สิ่งนี้คือมันสามารถเข้าถึงเซิร์ฟเวอร์ทั้งสามเครื่องได้ ไม่ใช่ทั้งหมดในเวลาเดียวกัน URL ใดที่คุณโหลดก่อนโหลดได้ดีและอีก 2 รายการให้ 404 ทันที ในเวลาเดียวกันการเรียกดูเซิร์ฟเวอร์ 3 เครื่องโดยตรงทั้ง 3 ไซต์ทำงานได้ตามปกติทั้งสามสามารถเชื่อมต่อกับเซิร์ฟเวอร์ nginx ที่พอร์ต 443
in flag
อัปเดต nginx ครั้งสุดท้ายเมื่อใด ตอนนี้เป็นรุ่นไหน รุ่นไหนก่อน (เวอร์ชันแพ็คเกจทั้งหมด) ตรวจสอบไฟล์บันทึกของตัวจัดการแพ็คเกจของคุณ
Michael Hampton avatar
cz flag
เซิร์ฟเวอร์ส่วนหลังของคุณใช้ HTTP/2 หรือไม่
Ian Straton avatar
lr flag
เวอร์ชัน Nginx คือ 1.18.0 ไม่มีการอัปเดตใดๆ เลยตั้งแต่การติดตั้งครั้งแรก (เป็นการติดตั้งใหม่สำหรับสภาพแวดล้อมการทดสอบนี้) ไซต์กำลังเรียกใช้ HTTP 2

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา