ฉันต้องการให้บริการหลายไซต์บนเซิร์ฟเวอร์ของฉัน แต่ละไซต์ที่ฉันคิดว่าจะรวมเป็น build docker-compose แต่ละไซต์มี nginx ของตัวเองซึ่งรับฟังพอร์ตเดียว
ฉันมีเว็บไซต์ที่มีชื่อโฮสต์ว่า site1.com มันเขียนนักเทียบท่าเปิดเผยพอร์ต 81:
...
บริการ:
เว็บ:
ภาพ: nginx
...
พอร์ต:
- '81:443'
...
...
และไคลเอนต์ nginx (ภายในคอนเทนเนอร์) ฟังทุกอย่างใน 443 และมีการตั้งค่า ssl ทั้งหมด
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ssl_certificate /etc/letsencrypt/fullchain1.pem;
ssl_certificate_key /etc/letsencrypt/privkey1.pem;
# ...
#และอื่นๆอีกมากมาย
}
และนี่คือโฮสต์ nginx ซึ่งเพิ่งผ่านจากพอร์ต 80 ถึง 81 ตาม server_name:
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง [::]:80;
server_name site1.com;
ที่ตั้ง / {
proxy_pass https://localhost:81;
}
}
สำหรับตอนนี้มันใช้งานได้ แต่มันไม่ปลอดภัย ดังนั้นฉันจึงลองเพิ่มการส่งต่อ 443
เซิร์ฟเวอร์ {
ฟัง 443;
ฟัง [::]:443;
server_name bederdinov.me;
ที่ตั้ง / {
proxy_pass https://localhost:81;
}
}
Nginx รีสตาร์ทได้ดี แต่เมื่อฉันไปที่ https://site1.com
ฉันจะได้รับ ERR_SSL_PROTOCOL_ERROR
ดูเหมือนค่อนข้างชัดเจน - โฮสต์ nginx พยายามให้บริการคำขอด้วย ssl แต่มีเพียงไคลเอนต์นักเทียบท่า nginx เท่านั้นที่รู้วิธีดำเนินการ
ฉันจะบอกโฮสต์ nginx ได้อย่างไรว่าไม่ต้องทำอะไรนอกจากส่งงานทั้งหมดไปยังไคลเอนต์ nginx เท่านั้น หรืออาจมีซอฟต์แวร์เซิร์ฟเวอร์อื่นที่ฉันสามารถใช้สำหรับงานนี้