แก้ไข:
หากคุณกังวลเกี่ยวกับการเชื่อมต่อระหว่าง reverse proxy ของคุณ (ซึ่งยุติอุโมงค์ SSL) และเซิร์ฟเวอร์เนื้อหาที่ไม่ปลอดภัย แม้ว่าวิธีนี้จะใช้งานได้และปลอดภัย คุณอาจควรกำหนดค่า upstream SSL หรืออุโมงค์ที่ปลอดภัย เช่น SSH หรือ IPSEC ระหว่าง เซิร์ฟเวอร์เนื้อหาและพร็อกซีย้อนกลับของคุณ
ฉันทำให้มันใช้งานได้:
โครงสร้างไฟล์:
ngnix/
กำหนดค่า/
nginx.conf
http_server_name.js
นักเทียบท่า-compose.yml
nginx.conf
load_module โมดูล/ngx_stream_js_module.so;
เหตุการณ์ {}
ลำธาร {
js_import หลักจาก http_server_name.js;
js_set $preread_server_name main.get_server_name;
แผนที่ $preread_server_name $http {
1.example.com server1_backend_http;
2.example.com server2_backend_http;
}
แผนที่ $ssl_preread_server_name $https {
1.example.com server1_backend_https;
2.example.com server2_backend_https;
}
ต้นน้ำ server1_backend_http {
เซิร์ฟเวอร์ 192.168.178.8:80;
}
อัพสตรีมเซิร์ฟเวอร์1_backend_https {
เซิร์ฟเวอร์ 192.168.178.8:443;
}
ต้นน้ำ server2_backend_http {
เซิร์ฟเวอร์ 192.168.178.7:80;
}
เซิร์ฟเวอร์ {
ฟัง 443;
ssl_preread บน;
proxy_pass $https;
}
เซิร์ฟเวอร์ {
ฟัง 80;
js_preread main.read_server_name;
proxy_pass $http;
}
}
นักเทียบท่า-compose.yml
รุ่น: '3'
บริการ:
ngnix:
ภาพ: nginx
ชื่อคอนเทนเนอร์: ngnix
รีสตาร์ท: เว้นแต่จะหยุด
ปริมาณ:
- ./config/ngnix.conf:/etc/nginx/nginx.conf:ro
- ./config/http_server_name.js:/etc/nginx/http_server_name.js:ro
พอร์ต:
- "192.168.178.4:80:80"
- "192.168.178.4:443:443"
http_server_name.js
var server_name = '-';
/**
* อ่านชื่อเซิร์ฟเวอร์จากสตรีม HTTP
*
* @param s
* ลำธาร.
*/
ฟังก์ชัน read_server_name (s) {
s.on ('อัปโหลด', ฟังก์ชัน (ข้อมูล, แฟล็ก) {
ถ้า (data.length || flags.last) {
s.done();
}
// หากเราพบส่วนหัวของโฮสต์
var n = data.indexOf('\r\nโฮสต์: ');
ถ้า (n != -1) {
// กำหนดจุดเริ่มต้นของค่าส่วนหัวของโฮสต์และของส่วนหัวถัดไป
var start_host = n + 8;
var next_header = data.indexOf('\r\n', start_host);
// แยกค่าส่วนหัวของโฮสต์
server_name = data.substr (start_host, next_header - start_host);
// ลบพอร์ตหากได้รับ
var port_start = server_name.indexOf(':');
ถ้า (port_start != -1) {
server_name = server_name.substr(0, port_start);
}
}
});
}
ฟังก์ชัน get_server_name (s) {
กลับ server_name;
}
ส่งออกค่าเริ่มต้น {read_server_name, get_server_name}
เอกสาร:
ngx_http_upstream_module
ngx_http_map_module
ngx_stream_proxy_module
แก้ไข:
อ่าน โพสต์บล็อกนี้ สำหรับข้อมูลเพิ่มเติม