ฉันจะตั้งค่า OpenLiteSpeed เพื่อย้อนกลับพร็อกซีไปยัง Nextcloud บนเครือข่ายภายในได้อย่างไร
น่าแปลกที่การค้นหา Habré สำหรับ OpenLiteSpeed ไม่ได้ให้อะไรเลย! ฉันรีบแก้ไขความอยุติธรรมนี้ เนื่องจาก LSWS เป็นเว็บเซิร์ฟเวอร์ที่ดี ฉันชอบความเร็วและอินเทอร์เฟซการดูแลเว็บที่สวยงาม:
แม้ว่า OpenLiteSpeed จะมีชื่อเสียงมากที่สุดในฐานะ "ตัวเร่งความเร็ว" ของ WordPress แต่ในบทความของวันนี้ฉันจะแสดงการใช้งานที่ค่อนข้างเฉพาะเจาะจง กล่าวคือ การย้อนกลับพร็อกซีของคำขอ (พร็อกซีย้อนกลับ) คุณบอกว่าเป็นเรื่องปกติที่จะใช้ nginx สำหรับสิ่งนี้ใช่ไหม ฉันจะเห็นด้วย แต่มันเจ็บมากที่เราตกหลุมรัก LSWS!
การมอบฉันทะก็โอเค แต่ที่ไหนล่ะ? ในบริการที่ยอดเยี่ยมไม่น้อย - Nextcloud เราใช้ Nextcloud เพื่อสร้าง "คลาวด์แชร์ไฟล์" ส่วนตัว สำหรับไคลเอนต์แต่ละราย เราจัดสรร VM แยกต่างหากด้วย Nextcloud และเราไม่ต้องการเปิดเผยพวกเขา "ภายนอก" แต่เราขอพร็อกซีผ่านพร็อกซีย้อนกลับทั่วไปแทน โซลูชันนี้ช่วยให้:
1) ลบเซิร์ฟเวอร์ที่เก็บข้อมูลไคลเอนต์ออกจากอินเทอร์เน็ตและ
2) บันทึกที่อยู่ IP
แผนภาพมีลักษณะดังนี้:
เป็นที่ชัดเจนว่าโครงร่างนั้นง่ายขึ้นเพราะ การจัดระเบียบโครงสร้างพื้นฐานของบริการเว็บไม่ใช่หัวข้อของบทความในวันนี้
นอกจากนี้ในบทความนี้ ผมจะละเว้นการติดตั้งและการกำหนดค่าพื้นฐานของ nextcloud โดยเฉพาะอย่างยิ่งเนื่องจากมีเนื้อหาในหัวข้อนี้เกี่ยวกับHabré แต่ฉันจะแสดงการตั้งค่าอย่างแน่นอน โดยที่ Nextcloud จะไม่ทำงานหลังพรอกซี
ได้รับ:
Nextcloud ได้รับการติดตั้งบนโฮสต์ 1 และกำหนดค่าให้ทำงานผ่าน http (ไม่มี SSL) มีเพียงอินเทอร์เฟซเครือข่ายท้องถิ่นและที่อยู่ IP "สีเทา" 172.16.22.110
มากำหนดค่า OpenLiteSpeed บนโฮสต์ 2 กันเถอะ มันมีสองอินเทอร์เฟซภายนอก (ดูอินเทอร์เน็ต) และภายในด้วยที่อยู่ IP บนเครือข่าย 172.16.22.0/24
ที่อยู่ IP อินเทอร์เฟซภายนอกของโฮสต์ 2 คือชื่อ DNS cloud.connect.link
งาน:
รับจากอินเทอร์เน็ตผ่านลิงค์ '
- การติดตั้ง OpenLiteSpeed บน Ubuntu 18.04.2
มาเพิ่มที่เก็บ:
wget -O
http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |sudo ทุบตี
sudo ปรับปรุง apt-get
ติดตั้ง, รัน:
sudo apt-get ติดตั้ง openlitespeed
sudo /usr/local/lsws/bin/lswsctrl เริ่มต้น
- การตั้งค่าไฟร์วอลล์ขั้นต่ำ
sudo ufw อนุญาตให้ ssh
ค่าเริ่มต้น sudo ufw อนุญาตให้ส่งออก
sudo ufw เริ่มต้นปฏิเสธการรับเข้า
sudo ufw อนุญาต http
sudo ufw อนุญาต https
sudo ufw อนุญาตจาก โฮสต์การจัดการของคุณ ไปยังพอร์ต 7080 ใด ๆ
sudo ufw enable - ตั้งค่า OpenLiteSpeed เป็นพร็อกซีย้อนกลับ
มาสร้างไดเร็กทอรีภายใต้ virtualhost กันซีดี /usr/local/lsws/
sudo mkdirc cloud.connect.link
ซีดี cloud.connect.link/
sudo mkdir {conf, html, บันทึก}
sudo chown lsadm:lsadm ./conf/
มากำหนดค่าโฮสต์เสมือนจากเว็บอินเตอร์เฟส LSWS
เปิดการจัดการ URL
เข้าสู่ระบบ/รหัสผ่านเริ่มต้น: admin/123456
เพิ่มโฮสต์เสมือน (โฮสต์เสมือน > เพิ่ม)
เมื่อทำการเพิ่ม ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น - ไฟล์การกำหนดค่าหายไป นี่เป็นเรื่องปกติ แก้ได้ด้วยการคลิก Click to create
ในแท็บทั่วไป ให้ระบุรูทเอกสาร (แม้ว่าจะไม่จำเป็น แต่การกำหนดค่าจะไม่หายไปหากไม่มีรูท) ชื่อโดเมน หากไม่ได้ระบุ จะนำมาจากชื่อโฮสต์เสมือนซึ่งเราตั้งชื่อชื่อโดเมนของเรา
ตอนนี้ถึงเวลาที่ต้องจำไว้ว่าเราไม่ได้มีเพียงเว็บเซิร์ฟเวอร์เท่านั้น แต่ยังมีพร็อกซีย้อนกลับอีกด้วย การตั้งค่าต่อไปนี้จะบอก LSWS ว่าพร็อกซีอะไรและที่ไหน ในการตั้งค่าโฮสต์เสมือน ให้เปิดแท็บแอปภายนอกและเพิ่มแอปพลิเคชันใหม่ของประเภทเว็บเซิร์ฟเวอร์:
ระบุชื่อและที่อยู่ คุณสามารถระบุชื่อที่กำหนดเองได้ แต่คุณต้องจำชื่อไว้ซึ่งจะมีประโยชน์ในขั้นตอนถัดไป ที่อยู่คือที่ที่ Nextcloud อาศัยอยู่ในเครือข่ายภายใน:
ในการตั้งค่าโฮสต์เสมือนเดียวกัน ให้เปิดแท็บบริบทและสร้างบริบทใหม่ของประเภทพร็อกซี:
ระบุพารามิเตอร์: URI = /, เว็บเซิร์ฟเวอร์ = nextcloud_1 (ชื่อจากขั้นตอนก่อนหน้า)
รีสตาร์ท LSWS สำเร็จได้ด้วยคลิกเดียวจากเว็บอินเตอร์เฟส ปาฏิหาริย์! (ผู้ให้บริการเมาส์ทางพันธุกรรมพูดในตัวฉัน)
- เราใส่ใบรับรอง กำหนดค่า https
ขั้นตอนการขอรับใบรับรอง เราจะละเว้น และยอมรับว่าเรามีมันแล้วและโกหกคีย์ในไดเร็กทอรี /etc/letsencrypt/live/cloud.connect.link
มาสร้าง "ผู้ฟัง" (ผู้ฟัง> เพิ่ม) เรียกมันว่า "https" ชี้ไปที่พอร์ต 443 และสังเกตว่าจะปลอดภัย:
ในแท็บ SSL ระบุเส้นทางไปยังคีย์และใบรับรอง:
“ผู้ฟัง” ถูกสร้างขึ้นแล้ว ตอนนี้ในส่วนการแมปโฮสต์เสมือนเราจะเพิ่มโฮสต์เสมือนของเราเข้าไป:
หาก LSWS จะพร็อกซีไปยังบริการเดียวเท่านั้น การกำหนดค่าจะเสร็จสมบูรณ์ได้ แต่เราวางแผนที่จะใช้มันเพื่อส่งคำขอไปยัง "อินสแตนซ์" ที่แตกต่างกันขึ้นอยู่กับชื่อโดเมน และทุกโดเมนจะมีใบรับรองของตนเอง ดังนั้น คุณต้องไปที่การกำหนดค่า virtualhost และระบุคีย์และใบรับรองอีกครั้งในแท็บ SSL ในอนาคต ควรทำสิ่งนี้กับโฮสต์เสมือนใหม่แต่ละโฮสต์
ยังคงต้องกำหนดค่าการเขียน URL ใหม่เพื่อให้คำขอ http ถูกส่งไปยัง https
(ยังไงก็ตาม เรื่องนี้จะสิ้นสุดเมื่อใด ถึงเวลาที่เบราว์เซอร์และซอฟต์แวร์อื่น ๆ จะต้องไปที่ https ตามค่าเริ่มต้น และส่งต่อไปยังแบบไม่มี SSL ด้วยตนเองหากจำเป็น)
เปิดเปิดใช้งานการเขียนซ้ำและเขียนกฎการเขียนซ้ำ:
เขียนใหม่ %{SERVER_PORT} 80
เขียนกฎใหม่ ^(.*)$https://%{SERVER_NAME}%{REQUEST_URI } [R=301,ลิตร]
เนื่องจากความเข้าใจผิดที่แปลกประหลาด จึงเป็นไปไม่ได้ที่จะใช้กฎการเขียนซ้ำกับการรีสตาร์ทอย่างสง่างามตามปกติ ดังนั้น เราจะรีสตาร์ท LSWS ที่ไม่สวยงาม แต่หยาบคายและมีประสิทธิภาพ:
sudo systemctl รีสตาร์ท lsws.service
เพื่อให้เซิร์ฟเวอร์ฟังพอร์ต 80 มาสร้าง Listener อื่นกัน เรียกมันว่า http ระบุพอร์ตที่ 80 และจะไม่ปลอดภัย:
โดยการเปรียบเทียบกับการตั้งค่าผู้ฟัง https ให้แนบโฮสต์เสมือนของเราเข้าด้วยกัน
ตอนนี้ LSWS จะฟังพอร์ต 80 และส่งคำขอไปยัง 443 จากนั้นเขียน URL ใหม่
โดยสรุป ฉันแนะนำให้ลดระดับการบันทึก LSWS ซึ่งตั้งค่าเป็น Debug ตามค่าเริ่มต้น ในโหมดนี้ บันทึกจะทวีคูณอย่างรวดเร็ว! ในกรณีส่วนใหญ่ ระดับคำเตือนก็เพียงพอแล้ว ไปที่การกำหนดค่าเซิร์ฟเวอร์ > บันทึก:
การกำหนดค่า OpenLiteSpeed เป็นพร็อกซีย้อนกลับเสร็จสมบูรณ์ รีสตาร์ท LSWS อีกครั้ง ตามลิงค์
เพื่อให้ Nextcloud ให้เราเข้าไป เราต้องเพิ่มโดเมน cloud.connect.link ในรายการที่เชื่อถือได้ ไปแก้ไข config.php กัน ฉันติดตั้ง Nextcloud โดยอัตโนมัติเมื่อติดตั้ง Ubuntu และการกำหนดค่าอยู่ที่นี่: /var/snap/nextcloud/current/nextcloud/config
เพิ่มพารามิเตอร์ 'cloud.connect.link' ให้กับคีย์ trusted_domains:
'trusted_domains' =>
อาร์เรย์ (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),
นอกจากนี้ ในการกำหนดค่าเดียวกัน คุณต้องระบุที่อยู่ IP ของพร็อกซีของเรา ฉันให้ความสนใจกับความจริงที่ว่าต้องระบุที่อยู่ซึ่งเซิร์ฟเวอร์ Nextcloud มองเห็นได้เช่น IP ของอินเทอร์เฟซ LSWS ภายในเครื่อง หากไม่มีขั้นตอนนี้ เว็บอินเตอร์เฟส Nextcloud จะทำงาน แต่แอปพลิเคชันไม่ได้รับอนุญาต
'trusted_proxys' =>
อาร์เรย์ (
0 => '172.16.22.100',
),
เยี่ยมมาก หลังจากนั้นเราสามารถเข้าสู่อินเทอร์เฟซการอนุญาตได้:
แก้ไขปัญหา! ตอนนี้ไคลเอนต์แต่ละรายสามารถใช้ "file cloud" ได้อย่างปลอดภัยที่ url ส่วนตัวของเขาเอง เซิร์ฟเวอร์ที่มีไฟล์จะถูกแยกออกจากอินเทอร์เน็ต ไคลเอนต์ในอนาคตจะได้รับทุกอย่างเหมือนกันและไม่ได้รับผลกระทบใด ๆ ที่อยู่ IP เพิ่มเติม
นอกจากนี้ คุณสามารถใช้ Reverse Proxy เพื่อส่งเนื้อหาแบบคงที่ได้ แต่ในกรณีของ Nextcloud สิ่งนี้จะไม่ทำให้ความเร็วเพิ่มขึ้นอย่างเห็นได้ชัด ดังนั้นจึงเป็นทางเลือกและทางเลือก
ฉันดีใจที่ได้แบ่งปันเรื่องราวนี้ ฉันหวังว่ามันจะเป็นประโยชน์กับใครบางคน หากคุณทราบวิธีการที่หรูหราและมีประสิทธิภาพมากขึ้นในการแก้ปัญหา ฉันจะขอบคุณสำหรับความคิดเห็น!
ที่มา: will.com