ฉันไม่รู้วิธีปิดการเชื่อมต่อกับโมดูลสตรีมอย่างสง่างาม ดังนั้นฉันไม่แน่ใจว่ามันจะเป็นวิธีแก้ปัญหาที่ถูกต้องหรือไม่ แต่ก็คุ้มค่าที่จะลอง (คุณสามารถใช้พอร์ตฟรีสำหรับเซิร์ฟเวอร์จำลอง/อัปสตรีม):
ลำธาร {
แผนที่ $ssl_preread_server_name $name {
เซิร์ฟเวอร์.domain.com;
www.domain.com www;
หุ่นจำลองเริ่มต้น;
}
เซิร์ฟเวอร์ต้นน้ำ {
แบ็กเอนด์ของเซิร์ฟเวอร์:443;
}
ต้นน้ำ www {
เซิร์ฟเวอร์ backendip2:443;
}
หุ่นต้นน้ำ {
แบ็กเอนด์ 127.0.0.1:4343;
}
เซิร์ฟเวอร์ {
ฟัง 443;
proxy_pass $ชื่อ;
ssl_preread บน;
}
เซิร์ฟเวอร์ {
ฟัง 4343;
กลับ "";
}
}
อัปเดต
หลังจากทดสอบโซลูชันข้างต้นแล้ว ฉันสามารถยืนยันได้ว่าใช้งานได้จริง อย่างไรก็ตามมันสร้างรายการบันทึกข้อผิดพลาดเช่น
WSARecv() ล้มเหลว (10053: การเชื่อมต่อที่สร้างไว้ถูกยกเลิกโดยซอฟต์แวร์ในเครื่องโฮสต์ของคุณ) ขณะพร็อกซีและอ่านจากอัปสตรีม ไคลเอ็นต์: 127.0.0.1 เซิร์ฟเวอร์: 127.0.0.1:443 อัปสตรีม: "127.0.0.1:4343" , ไบต์จาก/ถึงไคลเอ็นต์:517/0, ไบต์จาก/ถึงอัปสตรีม:0/517
หลังจากคิดอยู่สักพักฉันก็ลองทำสิ่งนี้:
http {
เซิร์ฟเวอร์ {
ฟัง 4343 ssl;
ssl_certificate /path/to/selfsigned.crt;
ssl_certificate_key /path/to/selfsigned.key;
กลับ 444;
}
}
ลำธาร {
แผนที่ $ssl_preread_server_name $name {
เซิร์ฟเวอร์.domain.com;
www.domain.com www;
หุ่นจำลองเริ่มต้น;
}
เซิร์ฟเวอร์ต้นน้ำ {
แบ็กเอนด์ของเซิร์ฟเวอร์:443;
}
ต้นน้ำ www {
เซิร์ฟเวอร์ backendip2:443;
}
หุ่นต้นน้ำ {
แบ็กเอนด์ 127.0.0.1:4343;
}
เซิร์ฟเวอร์ {
ฟัง 443;
proxy_pass $ชื่อ;
ssl_preread บน;
}
}
ใบรับรองและคีย์ที่ลงนามด้วยตนเองสามารถสร้างขึ้นได้โดยใช้คำสั่งต่อไปนี้:
openssl req -nodes -new -x509 -subj "/CN=localhost" -keyout /path/to/selfsigned.key -out /path/to/selfsigned.crt
อันนี้ปิดการเชื่อมต่ออย่างถูกต้อง
นอกจากนี้ยังใช้งานได้:
http {
เซิร์ฟเวอร์ {
ฟัง 80 default_server;
กลับ 444;
}
}
ลำธาร {
แผนที่ $ssl_preread_server_name $name {
เซิร์ฟเวอร์.domain.com;
www.domain.com www;
หุ่นจำลองเริ่มต้น;
}
เซิร์ฟเวอร์ต้นน้ำ {
แบ็กเอนด์ของเซิร์ฟเวอร์:443;
}
ต้นน้ำ www {
เซิร์ฟเวอร์ backendip2:443;
}
หุ่นต้นน้ำ {
แบ็กเอนด์ 127.0.0.1:80;
}
เซิร์ฟเวอร์ {
ฟัง 443;
proxy_pass $ชื่อ;
ssl_preread บน;
}
}
แน่นอน, ขด
บ่นเกี่ยวกับการพยายามจับมือกันสำหรับหมายเลขเวอร์ชัน SSL ที่ไม่ถูกต้อง และมีรายการตลกๆ ในบันทึกการเข้าถึง เช่น
127.0.0.1 - - [05/พ.ย./2021:01:04:34 +0200] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03L\xF9[\xB2\x7F \x99\xB1(\xAC\xB4\x91}\xE2N\xC6H\xE3\xB3_\xD1\xEA\xA3C\x1D\xE5\xE5\xB6\x02\xDB\x04h\xB6 *\xCB\x0E\xC0\ xF5\xB7\xAF[y|\x1B\x14_\xC2g\xEA\xA2\x1E\xB4\xC4Bj3t\xE8d\xE72vm\xF2\x1B\x00>\x13\x02\x13\x03\x13\x01\xC0, \xC00\x00\x9F\xCC\xA9\xCC\xA8\xCC\xAA\xC0+\xC0/\x00\x9E\xC0$\xC0(\x00k\xC0#\xC0'\x00g\xC0" 400 163 "- " "-"
แต่บันทึกข้อผิดพลาดนั้นชัดเจน